Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React-Redux:无法读取属性';地图';未定义的 目标_Javascript_Reactjs_Redux_React Redux - Fatal编程技术网

Javascript React-Redux:无法读取属性';地图';未定义的 目标

Javascript React-Redux:无法读取属性';地图';未定义的 目标,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,我有一个功能组件,它只显示Redux状态下存储的数组中的姓名(玩家)列表。它开始时是空的,但当用户按下另一个组件的按钮时,该数组将获得推入其中的值 按钮存储在单独组件中的原因是,在MVP之后,该按钮将被移动到不同的父组件中 列出播放器的组件位于名为PlayersCardT1的文件夹和文件中,并导出名为players的函数 从“../RowPlayer”导入RowPlayer; 康斯特玩家=(道具)=>{ 返回( { 道具.玩家.地图(玩家=>( )) } ) } 输出默认玩家; RowP

我有一个功能组件,它只显示Redux状态下存储的数组中的姓名(玩家)列表。它开始时是空的,但当用户按下另一个组件的按钮时,该数组将获得推入其中的值

按钮存储在单独组件中的原因是,在MVP之后,该按钮将被移动到不同的父组件中

列出播放器的组件位于名为PlayersCardT1的文件夹和文件中,并导出名为players的函数


从“../RowPlayer”导入RowPlayer;
康斯特玩家=(道具)=>{
返回(
    { 道具.玩家.地图(玩家=>( )) }
) } 输出默认玩家;
RowPlayer
是一个简单的组件,它只输出一个
{name}

index.js包含:


从'react redux'导入{connect};
从“/PlayersCardT1”导入玩家;
常量mapStateToProps=状态=>{
返回{
球员:国家队
};
};
导出默认连接(MapStateTops)(播放器);
错误 我得到以下错误:
TypeError:无法读取未定义的属性“map”

尝试解决方案 我尝试将映射放入条件中,但React抱怨组件没有返回任何内容,并添加了return null,因此我这样做了:


if(props.players){//编辑以从演示的解决方案尝试中删除打字错误
返回(
    { 道具.玩家.地图(玩家=>( )) }
) } 返回null;
这将阻止错误的发生,但列表永远不会填充,即使我按下按钮将名称添加到数组中。我可以在我的Redux开发工具中看到state-players数组中有名字,但没有变化

不确定此时该怎么办。

问题在于:

if (props.player) {
这里您正在检查
player
,而不是
player
。因此,将其更改为:

if (props.players) {

然后重试。

结果表明操作正确,但文件被错误地导入其父组件,因为我的自动导入无法跟上我移动文件的速度。

有更好的方法,您可以使用新的ES6功能检查情况

返回(
    { 道具?玩家?地图(玩家=>( )) }

)
我不知道redux,但在react的情况下,如果像这样初始化数组,它会给出一个未定义的错误 不正确

thi.state={
玩家:“,

}
您应该检查redux devtools并查看
状态。players
何时设置为未定义,或者可能将初始值设置为空数组。也可能是播放器未设置为
状态。players
但您必须检查redux devtools以了解这一点。由于未找到您引用的
.map
属性,这可能意味着
状态.players
最初不是数组,即使是空数组也会调度map属性。如果您可以在使用
map
时检查
状态.players
值,这样您就可以在
props.players.map
被调度之前添加一个
控制台.log
,并检查它是否是一个数组。看起来在“if(props.player)”中应该是多个玩家,我的redux devtools将玩家显示为一个空数组,但是,当我按照@KacperBiedka的建议使用console.log(props.players)时,我确实在控制台中得到了“undefined”。为什么会这样?很抱歉,当我重新编写条件来说明我所做的事情时,props.player而不是props.players是一个拼写错误。当我实际尝试将其作为解决方案时,它不在那里。似乎您的组件没有正确接收redux状态,我将搜索react组件和redux状态连接的问题;)