【发布时间】:2019-05-30 03:49:50
【问题描述】:
刚刚读到这个:https://reactjs.org/docs/react-api.html#reactpurecomponent
并试图找出一个函数什么时候不会返回纯粹的东西?
如果你给一个组件同样的 props/state,那么它肯定会返回同样的结果吗?
【问题讨论】:
标签: javascript reactjs components
刚刚读到这个:https://reactjs.org/docs/react-api.html#reactpurecomponent
并试图找出一个函数什么时候不会返回纯粹的东西?
如果你给一个组件同样的 props/state,那么它肯定会返回同样的结果吗?
【问题讨论】:
标签: javascript reactjs components
想象一下,如果您有一个显示天气的组件,如果是白天则显示太阳的背景图像,如果是夜晚则显示月亮的背景图像。
你会通过道具传递温度、风速等,但你会根据一天中的时间显示正确的图像。
所以,如果你在白天和晚上通过了 15 度的温度,即使你通过了相同的道具,组件的外观也会有所不同。
【讨论】:
如果你的函数组件有任何副作用,那么它就不是一个纯组件。例如,通过Date.now() 读取当前时间是一个副作用。如果那个日期是通过道具传递的,那么你很好。但是 React/JavaScript 不能保证函数组件没有副作用。
考虑以下功能组件。
function Impure() {
return <p>{Date.now()}</p>
}
function Pure(date) {
return <p>{date}</p>
}
【讨论】:
date 属性被传入,但没有被使用:function Impure(date) { return <p>{Date.now()}</p> }