什么时候反应成分不是纯成分?

时间:2019-01-03 14:27:59

标签: javascript reactjs components

刚刚读过这篇文章:https://reactjs.org/docs/react-api.html#reactpurecomponent

并试图找出函数何时不返回纯净的东西?

确定要为组件提供相同的道具/状态,那么它将始终返回相同的结果吗?

2 个答案:

答案 0 :(得分:1)

想象一下,如果您有一个组件显示天气情况,如果它是白天显示太阳的背景图像,如果是晚上则显示月亮的背景图像。

您将通过道具传递温度,风速等信息,但是您会根据一天中的时间显示正确的图像。

因此,如果您在白天和晚上通过15度的温度,即使通过相同的道具,组件的外观也会有所不同。

答案 1 :(得分:0)

如果您的功能组件有任何副作用,那么它将不是纯组件。例如,通过Date.now()读取当前时间是一个副作用。如果该日期是通过道具传递的,那么您就可以了。但是React / JavaScript不能保证功能组件没有副作用。

请考虑以下功能组件。

function Impure() {
  return <p>{Date.now()}</p>
}

function Pure(date) {
  return <p>{date}</p>
}