问题标签 [mapstatetoprops]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
react-native - 使用 Redux 工具包中的 createEntityAdapter 时,如何在类组件中将实体作为数组获取?
我的商店中有一个切片,是使用Redux Toolkit中的createEntityAdapter创建的。在函数组件中,您可以将useSelector与从. 但是如何在基于类的组件中将所有实体作为数组(如 selectAll 选择器)?我正在使用connect with mapStateToProps,它只允许我获取实体或 ID 作为道具,但并非所有实体都作为数组按与 ID 排序相同的顺序排序...adapter.getSelectors()
reactjs - 道具不是用 react-native 和 redux 定义的
我尝试将状态连接到我的一个组件中的道具。当mapPropsToState(state)
被调用时,我可以看到这state
正是我想要的。但是,当我尝试记录道具时,我收到一条错误消息:
我不明白我在这里做错了什么以及为什么它不起作用。
这是我的减速机:
这是我的组件:
无论我在哪里用断点停止代码执行,道具总是没有定义。那个代码有什么问题?
javascript - 使用 React 和 Redux 实现文本过滤的正确方法是什么?
我有一个包含 ToDo 列表的组件,上面有一个 SearchBar 来过滤 ToDo。ToDo 存储在 Redux 存储中,因为我在其他组件中也需要它们。但是 SearchTerm 是组件状态的一个属性,因为我只在这个组件中需要它。在componentDidMount
钩子中,我调度了一个操作,导致从我的远程服务器获取所有 ToDo。我正在使用mapStateToProps
和connect
来自 react-redux。如何在组件中只显示过滤后的 ToDo?在mapStateToProps
我无权访问组件状态以使用 SearchTerm 过滤来自 Redux 存储的所有 ToDos 并将过滤的ToDos 道具发送到组件。或者有没有办法订阅组件中对 ToDos 属性的更改,以便在从服务器获取 ToDos 时过滤它们?或者我应该将 SearchTerm 放在 redux 存储中,以便我可以在mapStateToProps
函数内部访问它?这个问题最干净的解决方案是什么?下面是一些代码来说明问题:
但是现在,当从服务器获取 toDos 并更新 toDos 属性时,filteredToDos 不会更新。是否有订阅道具更新的钩子或类似的东西?或者我应该将 SearchTerm 放在商店中并mapStateToProps
这样写?
首选解决方案是什么?
reactjs - 无法让 Redux mapStateToProps 在四分之一的组件上工作
我使用 React Redux Saga 并且有 3 个组件mapStateToProps
在 Sage 调度到我的reducer
. 即使我在组件上放置了一个断点console.log,第四个Component
也不会触发:render()
render()
并且可以看到Store
remoteArticles
上面有数据。
我制作了一部 40 秒的影片,展示发生了什么,
- 开始调试
- mapStateToProps 与空文章中断
- Saga 调度时减速器中断
- mapStateToProps 再次因包含数据的文章而中断
- 接下来
render()
应该调用但不是..
https://drive.google.com/file/d/1_QuKQd0YGbMuxrQ-qeQbF5mwlWLk0lly/view
Component
不触发的 SliderWrapper.js的完整代码render()
Component
使用 `SliderWrapper的 Timeline.js 的完整代码
reactjs - 使用 mapStateToProps 时未定义道具
在我的应用程序中,我像这样使用 mapStateToPros:
在调试中,当我停下来时,return
我可以看到我有一些数据处于状态。
当我在我的 useEffect 函数中停止应用程序并检查 时,props
值为props
undefined
这就是我将组件连接到商店的方式:
这是整个组件:
当我在 useEffect 中停止执行时,为什么道具未定义?
react-redux - Redux,MapStateToProps/useSelector:改变这些值是否安全
MapStateToProps 和 useSelector 都使用类似的回调函数store => store.group
是否可以安全地改变这些值,例如在 MapStateToProps 中像这样:
或在使用选择器:
而使用 useSelector 实际上也可以像这样在组件内部完成:
我的同事做了这样的事情,我不确定你是否应该let
在那里使用。我只是感兴趣,如果这是可以接受的方式来处理这个,或者如果这会导致问题?我不需要其他解决方案。我知道如何使用 using 来做到这一点const
。
reactjs - React & Redux:即使使用 mapStateToProps,组件的状态也不会更新
我在下面发布了一个答案,但如果有人能解释为什么这是必要的,你会得到赏金,我经历了一个 redux 教程,感觉我没有了解mapDispatchToProps
, 只有mapStateToProps
. 如果你能在更深层次上解释究竟是什么mapStateToProps
,mapDispatchToProps
正在做什么以及它们有何不同,我会给你赏金。
我有一个看起来像的 mapStateToProps 函数
在我的MyTab
组件中,我有一个按钮,如果这两个字段没有输入任何内容,则该按钮应该是非活动的,但是按钮是否被禁用的状态不会改变
该警报语句在页面刷新时执行,但在我输入数据后不会执行任何时间。我已经检查了 redux 状态是否正在更新。但是按钮不会更新,并且 isDisabled 函数不会运行多次
redux - React Redux 访问 mapStateToProps 中的动态过滤状态 - 重新渲染问题
我有一个功能组件,它传递了关于从 redux 存储中提取什么的指令。使用mapStateToProps=(state, ownProps)
,我可以愉快地从状态(存储)中提取所需的项目 - 但是,整个状态树的任何更改都会触发重新运行 mapStateToProps 和大量重新渲染。
让我开箱。
这是商店部分的快照:
我的父组件将所需的指令传递给子组件。
mapStateToProps 非常简单:
并且工作是在一个简单的函数中完成的:
但是因为我正在创建这个匹配数组,所以我认为 redux 认为我应该订阅树中的每个项目......当我只想对找到的元素进行更改时,在这种情况下:
我尝试使用 reselect 和 rereselect 而不是上面的 getItemsFromState 函数,但结果都相同。该树中的任何更改,从表面[6] 开始都会触发 mapsStateToProps 和重新渲染。
一定有办法解决这个问题,但我无法弄清楚。我尝试使用areStatesEqual
,但它只提供nextState
and prevState
,我需要ownProps
计算相等性。我可能可以使用areStatePropsEqual
,但这仅在mapStateToProps
不必要地重新计算之后才有效。
一定有办法!
reactjs - 在 reducer 中更改状态后未调用 MapStateToProps
我有这些文件:
numPadHandler(我的 reducer)、configureStore(我的商店)、TestRedux(我的组件,尝试使用商店)和我的应用程序文件。
减速机:
店铺 :
零件 :
应用程序 :
我不明白为什么当我点击按钮时,reducer 的状态正在改变,但函数 mapStateToProps 没有被再次调用。
页面加载后有我的控制台输出:
一键后:
两次点击后:
单击 2 次后完成控制台输出:
所以你可以看到动作正在发生,reducer 状态正在更新,但组件端没有更新!
你能解释一下为什么吗?
已解决:基于 TLadd 响应的答案:
我的减速器代码是错误的,这是编码的好方法: