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

标签 javascript jquery reactjs legacy

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

我有这样一个组件:

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

当旧的 jQuery soup 代码中发生一些特别的事情时,我想 将 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);

根据this email from a Facebook developer,这是一个反模式, 因为他写道 componentInstance 可能会被 React 破坏。

最佳答案

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

关于javascript - 从旧的外部 Javascript 更改 React 组件的状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26026097/

相关文章:

javascript - 使用 JavaScript (RegExp) 转换 HTML 实体

javascript - Flexslider 添加幻灯片(Ajax 内容)

jquery - 完整日历中的resourceGroupField在 Angular 4中不起作用

javascript - 如何根据链接到本地​​存储的数组的变化调用函数

reactjs - enzyme 和 Jest : How to simulate/test material-ui dropzone onChange handler when dropzone component is third party module?

javascript - 使用 QUnit(或其他单元测试工具)测试 Maps/Sets

javascript - 是否可以阻止这些面的渲染?

javascript - 如何从 DOM 事件调用 JavaScript 类实例方法?

jquery - 使用jquery接收gcm消息?

javascript - 获取所有类型的电影