javascript - 从父 React 刷新子状态

标签 javascript reactjs refluxjs

我有一个包含一些数据的表格,表格中的每个元素都是一个 React 类组件。它看起来像这样:

Table

我想要的只是有一个用于“选中所有”功能的复选框(左上角的复选框)。问题是我不知道如何解决这个问题,因为 propsstate

我在单元素组件中有这样的代码:

getInitialState: function() {
    return { component: this.props.data };
  },

render: function() {
    var data = this.state.component;
    data = data.set('checked', this.props.data.get('checked'));
    ...
}

我知道我不应该从 props 得到 checked 参数,但这只是暂时的。

我遇到的问题是:当我更新父级中的 checked 参数时,它不会更新状态,因为刷新后不会调用 getInitialState(是的,我知道它应该是那样的)。

我的问题是:我能以某种方式更新子组件的状态吗?或者这是更好的实现方式。

最佳答案

具有功能组件: 当父级提供的 props 发生变化时,刷新子级内部状态的一种简单方法是通过 useEffect():

在 children 身上:

const [data, setData] = useState(props.data);

useEffect( () => {
    setData(props.data);
}, [props.data]); 

以这种方式,每次 props.data 更改时,都会触发 useEffect 并强制为某些数据设置新状态,因此组件会“刷新”。

关于javascript - 从父 React 刷新子状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29848967/

相关文章:

javascript - YouTube 资源上 window.fetch 的 CORS 错误

javascript - 如何在我的 ReactJS 应用程序中添加 Wikipedia 样式引用?

reactjs - 如何让 React.js 组件监听 Reflux 中的存储

javascript - react : Rendering a list in reverse order

javascript - 仅将两个数组合并为公共(public)值

javascript - 如何在AngularJS Controller 中进行反向过滤

javascript - vuejs/vuex 中 Props 的顺序、计算和创建

json - 为什么 Reagent 以三种方式呈现 JSON?

html - 在 React 中 dangerouslySetInnerHTML 不适用于 html 标签。

javascript - 为什么 Reflux.js ListenAndPromise 帮助程序不起作用?