Reactjs 将整个全局状态传递给“MapStateTops”

Reactjs 将整个全局状态传递给“MapStateTops”,reactjs,redux,react-redux,Reactjs,Redux,React Redux,我想将整个全局状态传递给redux connect'mapStateToProps'函数 在我的组件中,我可以访问现在是全局状态的状态 这有什么问题吗 我不想将状态分割成许多块,并将其分割成每个组件,而只是给出整个全局状态 这有什么性能问题吗?我知道它会重新渲染整个组件,但使用react的扩散算法,我认为应该可以 使用“this.props.count”不如使用“this.props.todoSection.count”更具启发性。只是可读性问题 我读到react 1.6中的“时间切片api”可

我想将整个全局状态传递给redux connect'mapStateToProps'函数

在我的组件中,我可以访问现在是全局状态的状态

这有什么问题吗

我不想将状态分割成许多块,并将其分割成每个组件,而只是给出整个全局状态

这有什么性能问题吗?我知道它会重新渲染整个组件,但使用react的扩散算法,我认为应该可以

使用“this.props.count”不如使用“this.props.todoSection.count”更具启发性。只是可读性问题

我读到react 1.6中的“时间切片api”可能会改善与维护全局状态相关的各种性能问题


然后呢?无论何时状态中的任何地方发生更改,无论其是否与您的组件相关,您的组件都会重新加载


你为什么想要那样的东西?只是好奇,然后呢?无论何时状态中的任何地方发生更改,无论其是否与您的组件相关,您的组件都会重新加载


你为什么想要那样的东西?只是好奇

从技术上讲这是可能的,但更好的做法是在使用全局状态的每个组件中创建MapToStateProp。并映射其中唯一需要的道具。

从技术上讲,这是可能的,但更好的做法是在使用全局状态的每个组件中创建mapToStateProps。并映射其中唯一需要的道具。

听起来你不想映射整个全局状态,只想映射相关的属性。因此,您当然可以只绘制一家商店的地图:

const mapStateToProps = ({ todoStore }) => ({ todoStore });
这比映射整个应用商店的成本要低得多,但如果应用商店变得足够大和/或最终用户的浏览器足够糟糕,那么从规模上看,这可能会导致整个应用程序出现性能问题。充其量它是一个反模式

使用this.props.count不如使用this.props.todoStore.count更具启发性。只是可读性问题

在仍然只映射所需数据的情况下,始终可以使用命名空间:

const mapStateToProps = ({ todoStore: { count, foo } }) => ({ todoStore: { count, foo } });
这将为您提供所需的形状,同时只连接所需的状态。但是,重复属性名称的开发成本很低,而且仍然需要定义要映射的状态,这可能会违背目的。

听起来,您不想映射整个全局状态,只想映射相关的状态。因此,您当然可以只绘制一家商店的地图:

const mapStateToProps = ({ todoStore }) => ({ todoStore });
这比映射整个应用商店的成本要低得多,但如果应用商店变得足够大和/或最终用户的浏览器足够糟糕,那么从规模上看,这可能会导致整个应用程序出现性能问题。充其量它是一个反模式

使用this.props.count不如使用this.props.todoStore.count更具启发性。只是可读性问题

在仍然只映射所需数据的情况下,始终可以使用命名空间:

const mapStateToProps = ({ todoStore: { count, foo } }) => ({ todoStore: { count, foo } });

这将为您提供所需的形状,同时只连接所需的状态。但是,重复属性名称只需要开发人员付出少量的成本,而且仍然需要定义映射的状态,这可能会违背目的。

你能分享你的代码吗?不,我认为这是不言自明的。在connect->MapStateTrops中,只传递整个状态,而不是在组件中使用状态的任何部分。您可以共享您的代码吗?不,我认为这是不言自明的。在connect->MapStateTrops中,只需传递整个状态,而不是在组件中使用状态的任何部分。谢谢您的回答。我认为为了可读性,拥有一个全局状态比拥有多个局部状态(每个局部状态映射到全局状态的一部分)要好得多。使用“this.props.count”不如使用“this.props.todoSection.cout”更具启发性。只是可读性问题。重新呈现整个链组件的性能问题真的很糟糕吗?这真的很糟糕,有几个原因,其中两个最重要的原因是:1性能您有风险,您的应用程序不断重新加载,很快就会出现在usless ui中;2您正在打破组件封装:您希望组件有一个单一/狭窄的任务,并且您希望它只获取所需的数据。我看不到任何可读性增益,因为它只是命名:this.props.count>this.props.todoscoount不是将“this.props.count”重命名为“this.props.todoscoount”,而是重命名为this.props.todoscoount.count。现在您知道“count”的确切来源,而无需查看连接的定义。我的意思是,如果像这样的名称.props.count会给您带来可读性问题,请使用类似这样的模式描述。props.todoscoount您可以通过查看相同组件中的MapStateTops知道它的来源谢谢您的回答。我认为为了可读性,拥有一个全局状态比拥有多个局部状态要好得多
ach映射到全局状态的一部分。使用“this.props.count”不如使用“this.props.todoSection.cout”更具启发性。只是可读性问题。重新呈现整个链组件的性能问题真的很糟糕吗?这真的很糟糕,有几个原因,其中两个最重要的原因是:1性能您有风险,您的应用程序不断重新加载,很快就会出现在usless ui中;2您正在打破组件封装:您希望组件有一个单一/狭窄的任务,并且您希望它只获取所需的数据。我看不到任何可读性增益,因为它只是命名:this.props.count>this.props.todoscoount不是将“this.props.count”重命名为“this.props.todoscoount”,而是重命名为this.props.todoscoount.count。现在,您知道“count”的确切来源,而无需查看连接的定义。我的意思是,如果像这样的名称.props.count会给您带来可读性问题,请使用类似这样的模式描述。props.ToDoSoCount您可以通过查看相同组件中的mapStateToProps来知道它的来源;只是一个建议,使用单词map而不是pass可能更好,因为pass建议mapstatetops参数?这是正确的答案。连接更多组件通常会提高性能,因为每个组件只需要存储状态的一小部分,所以大多数情况下它不需要重新渲染;只是一个建议,使用单词map而不是pass可能更好,因为pass建议mapstatetops参数?这是正确的答案。连接更多的组件通常会提高性能,因为每个组件只需要存储状态的一小部分,所以大部分时间它都不需要重新渲染。我承认:我目前正在做这件事——将整个还原器映射到状态,但这并不知道更好——这导致了在速度较慢的设备上出现一些明显的延迟。我承认:我目前正在做这件事——将整个还原器映射到状态,但不知道更好——这导致了一些明显的延迟滞后于较慢的设备。