javascript React+Redux|Prop Returns Undefined-为什么?

tcomlyy6  于 2023-05-05  发布在  Java
关注(0)|答案(4)|浏览(97)

我最近学习了一些基本的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

l7mqbcuq

l7mqbcuq1#

React和Redux的结构和标记都很奇怪,我不能给予你正确的语法,但是在这个mapStateToProps的Word容器中,你需要返回来自Redux商店的这些props:

return {
 whateverProps: state.whateverProps
}

然后当你想在你的组件中传递这些props时,你可以访问并传递它们:

this.props.whateverProps
flvlnr44

flvlnr442#

需要添加的是connet语句(来自react-redux库)。它导出一个名为mapStateToProps的函数。它是一个HOC,它获取redux商店的一部分,并将它们传递给您的组件 prop 。

zz2j4svz

zz2j4svz3#

找到的解决方案+说明:
说明:组件从类中获得了它的props,所以它确实得到了正确的初始化,就像当该类的示例在其构造函数中调用从存储中获取的props时一样。这些初始状态一直作为类的属性存储,当作为对象的属性访问时,返回的值与存储在类中的值相同。
解决方案:删除/不使用这些props作为类属性,而是从render()函数调用它们,该函数在组件更改时会被 * 召回 *(在本例中,其props的更改由mapStateToProps进行,由Redux存储中的更改触发)。

svujldwt

svujldwt4#

与对象的销毁部分有点混淆

addSuffix(suffix) = currentWordParts => [...currentWordParts, suffix]

因为在原始对象中没有要替换的“suffix”键。

相关问题