次のように React.js を使用してサイト全体を構築しています。
React.render(
<div id="mainWrapper">
<MainHeader />
<div id="contentWrapper" className="contentWrapper">
<MainFlow data={example_data} />
<AddElementWrapper data={activities} />
</div>
</div>,
document.body
);
しかし、データ保持コンポーネントの 1 つである 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 要素だけがあります。
すべてのアプリケーション データを単一のルート コンポーネントに接続することで、この問題を回避できました。ただし、特定のデータ セットを個別に保持したいと考えています。方法はありますか?