反应:在道具变更时更新状态

时间:2018-10-11 17:55:52

标签: reactjs state react-props

假设以下所有三个组件配置均有效:

<Arc radius="200"/>
<Arc radius="90% - 20"/>
<Arc radius={this.calcRadiusFn}/>

首先将使用绝对值200作为圆弧半径。

第二个将半径设置为默认半径的90%(该默认半径是从弧的容器的大小派生的)减去20个像素。

第三种方法将使用提供的calcRadiusFn函数来计算半径(该函数具有默认半径,并使用某种逻辑来返回某些派生值)。

在所有三种情况下,我实际上都希望将收到的radius道具转换为一个函数:

1) (x) => 200
2) (x) => x * 0.9 - 20
3) (x) => Math.sqrt(x) + 42

因此,在render方法中,我可以这样做:

const radius = this.radiusFn(defaultValue);
// or
const radius = this.state.radiusFn(defaultValue);

我知道这里有getDerivedStateFromProps,并且今年夏天已弃用旧方法:https://reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html

但是getDerivedStateFromProps似乎不是执行此操作的正确位置。您可以使用它来执行此操作,但是您基本上是在为要转换的每个道具创建自己的临时解决方案,并记住先前道具的价值,等等。道具使用前的系统/惯用方式?

0 个答案:

没有答案