Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.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.find()结果的最佳实践?_Javascript_Reactjs_Logic - Fatal编程技术网

等待javascript.find()结果的最佳实践?

等待javascript.find()结果的最佳实践?,javascript,reactjs,logic,Javascript,Reactjs,Logic,我经常需要将三元运算符传递给依赖于.find()方法结果的值,因为它在找到值之前返回未定义的值: const getValue = stateDataA => { let value = stateDataA.find(item => item.name === stateDataB[0]).name; return value; } 这通常返回“找不到未定义的属性‘名称’”。下面是我如何解决这个问题的,但我知道这不是最优的: let value = stateDa

我经常需要将三元运算符传递给依赖于
.find()
方法结果的值,因为它在找到值之前返回
未定义的值:

const getValue = stateDataA => {
    let value = stateDataA.find(item => item.name === stateDataB[0]).name;
    return value;
}
这通常返回“找不到未定义的属性‘名称’”。下面是我如何解决这个问题的,但我知道这不是最优的:

let value = stateDataA.find(item => item.name === stateDataB[0]) ? stateDataA.find(item => item.name === stateDataB[0]).name : "placeholder";

我的数据通常使用
connect()
通过道具传递,我将主要组件包装在一个容器中,该容器仅在加载状态时加载,因此我认为问题在于
find()
我的值所需的时间。非常感谢您的帮助。

请尝试
item?.name
。这将检查
是否未定义。如果否,则它将跳过以下操作。

尝试
item?.name
。这将检查
是否未定义。如果没有,那么它将跳过以下操作。

并且是javascript操作符家族中新的但非常受欢迎的成员:

let a=[{name:1},{name:2},{name:3}]
console.log(a.find(x=>x.name==2)?.name???“占位符”)
console.log(a.find(x=>x.name==5)?.name???“占位符”)
是javascript操作符家族中新的但非常受欢迎的成员:

let a=[{name:1},{name:2},{name:3}]
console.log(a.find(x=>x.name==2)?.name???“占位符”)

console.log(a.find(x=>x.name==5)?.name???“占位符”)
“我认为问题在于查找()
我的值所需的时间。”-不,不是
find
是同步的,这里没有竞争条件。只是
stateDataA
如果返回
undefined
,则不包含具有所需
.name
的项。可能是“状态加载后才加载的容器”的某些内容被破坏了,或者状态不是您期望的状态。您是对的,解释为它是同步的,这就澄清了这一点。不知道为什么,当登录到控制台时,它首先返回undefined,然后立即返回值。容器在useEffect钩子中具有仅在加载道具时加载子组件的条件。无论如何,谢谢“我认为问题只是找到我的价值所需的时间。”-不,不是
find
是同步的,这里没有竞争条件。只是
stateDataA
如果返回
undefined
,则不包含具有所需
.name
的项。可能是“状态加载后才加载的容器”的某些内容被破坏了,或者状态不是您期望的状态。您是对的,解释为它是同步的,这就澄清了这一点。不知道为什么,当登录到控制台时,它首先返回undefined,然后立即返回值。容器在useEffect钩子中具有仅在加载道具时加载子组件的条件。无论如何谢谢你