我最近学习了一些基本的Redux,并在他们的文档上查看了教程。
我有一个React表示类组件,我希望它也是自己的容器组件,名为Word
。
我希望它的 prop 值来自Redux商店。我能够成功地从存储的初始状态中获取其props的初始值,但是当我尝试调度一个操作时,其属性wordParts
返回undefined
。
以下是Word
的结构:
Word : {
wordParts : <array>
stem : <object> //I'm using a string for now for testing
}
这是商店的结构:
store : {
word : {
wordParts : <array>
stem : <object> //I'm using a string for now for testing
}
}
这是我希望在调度操作时执行的操作:
//is used to update Word.stem
replaceStem(stem) = currentStem => newStem
//is used to add a some `suffix` variable as the last element of the current Word.wordParts
addSuffix(suffix) = currentWordParts => [...currentWordParts, suffix]
这是我的代码-我有一些其他的不相关的代码,我改变了它一点,以删除不相关的代码(如样式),但它应该表现得与我的本地代码相同。
https://codesandbox.io/s/rj2xlryx8m
4条答案
按热度按时间l7mqbcuq1#
React和Redux的结构和标记都很奇怪,我不能给予你正确的语法,但是在这个
mapStateToProps
的Word容器中,你需要返回来自Redux商店的这些props:然后当你想在你的组件中传递这些props时,你可以访问并传递它们:
flvlnr442#
需要添加的是
connet
语句(来自react-redux
库)。它导出一个名为mapStateToProps
的函数。它是一个HOC,它获取redux商店的一部分,并将它们传递给您的组件 prop 。zz2j4svz3#
找到的解决方案+说明:
说明:组件从类中获得了它的props,所以它确实得到了正确的初始化,就像当该类的示例在其构造函数中调用从存储中获取的props时一样。这些初始状态一直作为类的属性存储,当作为对象的属性访问时,返回的值与存储在类中的值相同。
解决方案:删除/不使用这些props作为类属性,而是从
render()
函数调用它们,该函数在组件更改时会被 * 召回 *(在本例中,其props的更改由mapStateToProps进行,由Redux存储中的更改触发)。svujldwt4#
与对象的销毁部分有点混淆
因为在原始对象中没有要替换的“suffix”键。