在调用render()之前,需要处理一些传入我的React组件的道具。
我很确定我应该在构造函数和componentWillReceiveProps调用的函数中进行此处理。
我认为将处理后的数据存储在状态中没有任何好处,因为唯一可以改变它的是我的处理功能 - 当完成此处理时,渲染已经发生,所以我不需要更改为此状态以触发新渲染。
但是,我不确定在道具或州之外存储组件数据是否是反模式。
我应该在哪里存储此处理的结果?在州或地方阶级财产?
答案 0 :(得分:2)
您可以将此处理的结果存储为附加到this
的本地类属性。这不是反模式,因为它符合ES6最佳实践,React建立在其上。
请参阅此博文:
“this.<something>
使用React时使用最少的功能之一是this
。人们经常忘记React只是带有ES2015语法的JavaScript。您可以在JavaScript中执行任何操作,也可以在React中执行。
this
的用例是存储更改不应触发重新呈现的值“。
- https://medium.freecodecamp.com/where-do-i-belong-a-guide-to-saving-react-component-data-in-state-store-static-and-this-c49b335e2a00#.4oaiugfs6
答案 1 :(得分:2)
就个人而言,我想尽量保持我的组件尽可能简单。就像你说的那样,组件本身不需要跟踪状态,因为数据不会改变。
我建议使用container来处理数据转换,并仅将表示就绪数据传递给组件进行渲染。它不必存储在任何地方:它只是在变换完成之前不会渲染。