如何在react.js中使用setProps

2024-01-08

我想打电话setProps从外部myComponent能够动态更改数据myComponent.
我希望在更改组件的道具后,它将重新渲染自身。

我正在尝试以下操作:

var myComponent = React.createClass({
  render: function () {
    return (
      React.DOM.div(null, this.props.data)
    );
  }
});

React.renderComponent(
  myComponent({ data: someData }),
  document.getElementById('predictionContent')
);

myComponent.setProps({data: someData2});

问题是我不明白如何使用setProps对于组件。 就我而言,我收到“未定义”错误。

怎么解决这个问题呢?


warning: setProps is 现已弃用 https://facebook.github.io/react/blog/2015/10/07/react-v0.14.html#new-deprecations-introduced-with-a-warning.

React.createClass返回一个类,它是React.renderComponent它返回一个类的实例,该类具有setProps method.

试试这个:

var MyComponent = React.createClass({
    render: function () {
        return React.DOM.div(null, this.props.data);
    }
});

var myComponent = React.renderComponent(
     new MyComponent({ data: someData }),
     document.getElementById('predictionContent')
);

myComponent.setProps({ data: someData2 });

话虽如此,Chad Scira 的答案也是正确的:重新渲染可能比调用 setProps 更好。这将使其看起来与 render() 方法内的代码相同,并且您始终可以调用renderComponent,无论是第一次还是后续更新。

像这样:

var MyComponent = React.createClass({
    render: function () {
        return React.DOM.div(null, this.props.data);
    }
});

React.renderComponent(
     new MyComponent({ data: someData }),
     document.getElementById('predictionContent')
);

// later
React.renderComponent(
     new MyComponent({ data: someData2 }),
     document.getElementById('predictionContent')
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在react.js中使用setProps 的相关文章

随机推荐