从旧的外部 Javascript 更改 React 组件的状态?

IT技术 javascript jquery reactjs legacy
2021-05-08 19:29:19

如何从旧的遗留 jQuery 汤代码更改 React 组件的状态?

我有一个这样的组件:

var AComponent = React.createClass({
  getInitialState: function() {
    return { ids: [] }
  },
  render: function() {
    ...
  },
  onButtonClick: function() {
    ids.splice(…); // remove the last id
  }
});

当旧的 jQuery 汤代码中发生特殊情况时,我想将 id 推送到AComponent.state.ids. 我怎样才能做到这一点?

一个“明显”的解决方案是反模式;这里是:

var componentInstance = AComtonent({});
React.renderComponent(componentInstance, document.getElementById(...));

// Somewhere else, in the jQuery soup. Something special happens:
componentIntance.state.ids.push(1234);
componentIntance.setState(componentInstance.state);

根据这封来自 Facebook 开发人员的电子邮件,这是一个反模式,因为他写的componentInstance可能会被 React 破坏。

1个回答

我会让组件无状态。ids数组存储在组件之外,并将其作为带有修改数组的函数的 prop 传递。请参阅 JSFiddle 上的示例:http : //jsfiddle.net/ohvco4o2/5/