gpt4 book ai didi

javascript - 如何将数据与多个根组件分开?

转载 作者:行者123 更新时间:2023-11-29 18:11:24 24 4
gpt4 key购买 nike

我正在使用 React.js 构建我的整个网站,如下所示:

     React.render(
<div id="mainWrapper">
<MainHeader />
<div id="contentWrapper" className="contentWrapper">
<MainFlow data={example_data} />
<AddElementWrapper data={activities} />
</div>
</div>,
document.body
);

但是,在我的一个数据保存组件(即 MainFlow 或 AddElementWrapper)上调用 setProperties 时,我收到一个错误,指出我应该通过它们的父级操作数据。

Uncaught Error: Invariant Violation: replaceProps(...): You called `setProps` or `replaceProps` on a component with a parent. This is an anti-pattern since props will get reactively updated when rendered. Instead, change the owner's `render` method to pass the correct value as props to the component where it is created.

首先:我认为只有当我要操作的组件有另一个所有者 时,这才会成为问题。但是,我的组件没有 React 组件作为所有者,只有 HTML 元素作为父级

我可以通过将所有应用程序数据附加到单个根组件来避免这个问题。但是,我想将某些数据集分开。有办法吗?

最佳答案

您应该定义一个 Wrapper 组件并在那里维护数据状态,并在外部数据发生变化时简单地调用 setState。

Wrapper = React.createClass({
getInitialState: function() {
return {example_data: example_data, activities: activities};
},
refresh: function() {
this.setState({example_data: this.state.example_data, activities: this.state.activities});
},
render: function() {
return (
<div id="mainWrapper">
<MainHeader/>
<div id="contentWrapper" className="contentWrapper">
<MainFlow data={this.state.example_data} />
<AddElementWrapper data={this.state.activities} />
</div>
</div>
);
}
});

React.render(<Wrapper/>);

关于javascript - 如何将数据与多个根组件分开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27047747/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com