Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.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 如何使用从Redux返回的嵌套数据结构而不会遇到诸如';无法访问未定义的';的属性x;?_Javascript_Reactjs_Redux_Next.js - Fatal编程技术网

Javascript 如何使用从Redux返回的嵌套数据结构而不会遇到诸如';无法访问未定义的';的属性x;?

Javascript 如何使用从Redux返回的嵌套数据结构而不会遇到诸如';无法访问未定义的';的属性x;?,javascript,reactjs,redux,next.js,Javascript,Reactjs,Redux,Next.js,我试图使用Redux选择器从Redux存储返回的嵌套数据结构中提取特定数据 const getContactPhone = state => (state.home.data.blocks[1].contactPhone); 当我的Next.js站点使用getInitialProps加载时,我从API获取这些数据并将其存储在存储中。看起来存储数据出现和消失了——也许这与Next.js和Next redux包装器处理存储创建的方式有关。例如,在任何情况下,我都会收到“无法读取未定义的联系人

我试图使用Redux选择器从Redux存储返回的嵌套数据结构中提取特定数据

const getContactPhone = state => (state.home.data.blocks[1].contactPhone);
当我的Next.js站点使用
getInitialProps
加载时,我从API获取这些数据并将其存储在存储中。看起来存储数据出现和消失了——也许这与Next.js和Next redux包装器处理存储创建的方式有关。例如,在任何情况下,我都会收到“无法读取未定义的联系人电话”错误

显然,我可以把支票放进去,比如

const getContactPhone = state => (state && state.home && state.home.data 
 && state.home.data.blocks && state.home.data.blocks[1] ? state.home.data.blocks[1].contactPhone : '');
但这看起来既尴尬又丑陋。有没有更好的方法来处理这个问题?有什么图书馆可以帮助我吗

谢谢你给我们提供任何前进的线索

拉姆达有一个功能。将属性的路径作为字符串数组传递。如果该属性存在,则返回其值;否则返回未定义的

console.log(R.path(['a','b','c',0],{a:{b:{c:[1,2]}));//1.
log(R.path(['a','b','c',0],{}));//未定义