为什么redux状态未映射为反应状态?

时间:2019-02-25 19:46:31

标签: reactjs redux

我对React-Redux还是很陌生,遇到了一种名为 mapstatetoprops 的方法。

但是为什么redux状态没有映射到反应状态?为什么将它映射到道具呢?

3 个答案:

答案 0 :(得分:2)

在React中,状态属于组件,而props从其父级传递到组件。 spark.sql("SELECT from_unixtime(unix_timestamp(substr(time, 1, 23), 'dd.MM.yyyy HH:mm:ss.SSS')) AS timestamp, cast(regexp_replace(column_"COLUMN_NAME"",',','.') as float) AS Column FROM table") 是在mapStateToProps()内部使用的函数,用于将数据从Redux存储传递到组件。

状态与道具之间的区别:https://codeburst.io/react-state-vs-props-explained-51beebd73b21

如果您想在组件状态下使用Redux存储中的数据,则组件首先需要将其作为道具接收。这样,您就可以将其映射到connect()中组件的状态。 https://reactjs.org/docs/react-component.html#static-getderivedstatefromprops

以这种方式从props导出状态时,更新组件的状态不会更改Redux状态。

答案 1 :(得分:1)

主要原因(如我所见)

“哑巴”组件仅处理属性,而不处理状态。

“笨拙”的组件的动机之一是它们很容易测试:您需要做的就是传递道具。这意味着无论您测试的是什么道具,只要它们在给定的道具下都做对了。

将redux存储映射到属性加强了这一概念。一旦介绍了组件状态,您就必须玩更多(一些简单的)游戏来测试组件,但是它不像纯组件那样简单。

答案 2 :(得分:1)

这是Redux工作流程。

当不使用redux时,您使用本地状态(组件状态)并将数据通过父级传递给子级,那么当您拥有更多组件时,这将使数据共享变得非常困难。

ComponentOne具有要传递给组件4的数据:

ComponentOne -> ComponentTwo -> ComponentThree -> ComponentFour

使用Redux时,您有一家商店,但是不能将其用作对象(获取器和设置器),而是将其内容映射到需要每个属性的组件。

Redux场景:

store {userName: "user", otherData...}

仪表板

function mapStateToProps(state) {
    return {
        userName : state.userName
}

通过这种方式,组件将侦听userName的更改,但只能通过 mapDispatchToProps 更改存储中的数据。这样,可以确保Single Source of Truth React原理。