React - 处理道具时的重物

时间:2017-03-23 16:35:48

标签: javascript reactjs

在调用render()之前,需要处理一些传入我的React组件的道具。

我很确定我应该在构造函数和componentWillReceiveProps调用的函数中进行此处理。

我认为将处理后的数据存储在状态中没有任何好处,因为唯一可以改变它的是我的处理功能 - 当完成此处理时,渲染已经发生,所以我不需要更改为此状态以触发新渲染。

但是,我不确定在道具或州之外存储组件数据是否是反模式。

我应该在哪里存储此处理的结果?在州或地方阶级财产?

2 个答案:

答案 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来处理数据转换,并仅将表示就绪数据传递给组件进行渲染。它不必存储在任何地方:它只是在变换完成之前不会渲染。