对道具和国家感到困惑

时间:2017-05-21 16:43:17

标签: reactjs react-redux

我是React的初学者,我不理解props和state或setState背后的想法。我有一些javascript和节点的经验,节点上有类似的东西可以帮助我理解道具和状态的想法吗?

1 个答案:

答案 0 :(得分:3)

React 而言,props和state背后的主要思想是道具可以从外部传递,而状态只能在组件本身内定义和维护。

现在,许多人会争辩说可以从组件外部更改状态,这可以通过将一些更新组件状态的函数作为支柱传递给另一个组件来完成。

可以这样想,组件的状态在组件的构造函数中定义 ,并且只能通过调用setState方法来更改。单击一个按钮,或者在输入等中输入文本时,可以调用setState函数。您还可以将一些调用setState作为prop的函数传递给子组件,这是 only 方式可以从组件外部更改组件的状态(但这仍然来自子组件,这意味着它仍然在组件内部。)

另一方面,道具可以来自组件的外部。它们从父组件传递下来,可以是functionObject s以及原始值。

到目前为止,这是React组件中stateprops之间的差异。即使在混合中添加 redux 之后,这种差异仍然是相同

将redux视为一个单独的位置,与React和组件的stateprops完全无关。现在,redux的作用是,它定义了一个中央存储,其中定义/存储了应用程序使用的所有数据。配置并实例化此存储后,您可以使用connect包中的react-redux函数在React组件中访问它。通过将React组件与redux连接,您可以向组件添加额外的props(如前所述,状态在组件内定义和修改,这就是redux注入的原因数据和函数作为组件的道具)。在将组件连接到redux存储之后,您可以调用将修改redux存储的函数(称为操作),并且将使用redux中的新数据重新呈现依赖于已修改的redux存储部分的那些组件。存储。

有很多文章解释道具与州之间的区别,我最喜欢的一篇是props vs state

此外,您可以找到有关redux自己here的创建者使用redux的最佳方法的建议。即使您对redux不感兴趣,也可以查看本文,进一步了解state vs props