Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.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
Reactjs 在条件内调用函数_Reactjs - Fatal编程技术网

Reactjs 在条件内调用函数

Reactjs 在条件内调用函数,reactjs,Reactjs,我想在reactjs中发送一个动作。 我使用useffect()进行分派: useffect(()=>{ 添加数据({ …汽车[0], }); },[var])问题在于,如果将函数声明包装在if语句块中,它的作用域将局限于该块 实际上,您要做的是声明函数,然后将函数调用包装在if语句块中 您应该这样实现它: // Take the condition out here const addData = payload => { dispatch({ type: 'ADD_SOMETH

我想在reactjs中发送一个动作。 我使用useffect()进行分派:

useffect(()=>{
添加数据({
…汽车[0],
});

},[var])问题在于,如果将函数声明包装在
if
语句块中,它的作用域将局限于该块

实际上,您要做的是声明函数,然后将函数调用包装在
if
语句块中

您应该这样实现它:

// Take the condition out here
const addData = payload => { 
  dispatch({ type: 'ADD_SOMETHING', payload });
  return dispatch({ type: 'ADD_SOMETHING' });
};

useEffect(() => {
  // Instead, use the condition here
  if (a.length === b.length) {
    addData({ ...cars[0] });
  }
}, [a, b]);
另一项建议:

您不应该在
addData
函数中执行两次调度

const addData = payload => { 
  dispatch({ type: 'ADD_SOMETHING', payload });
  return dispatch({ type: 'ADD_SOMETHING' });
};
应该是:

const addData = payload => { 
  return dispatch({ type: 'ADD_SOMETHING', payload });
};

如果多个调度是有意的,那么最好在
reducer
端处理它们。

声明函数定义和调用函数定义不是一回事。
a
b
是什么,在哪里?条件测试在哪里?请提供完整的组件代码。为什么在
useffect
依赖项中有
var
?你能展示完整的组件以便我们能获得更多的上下文吗?你的代码还可以,但问题仍然存在,因为在第一次渲染时,
a.length
,和
b.length
的结果是我所期望的,但在第二次渲染时,我只得到
a
的预期值,而不是
b
,这就是为什么在第二次渲染时我调度它,即使它不符合条件。这就是为什么我想在useEffect之外执行我的条件,因为在那里我得到了预期的值。我尝试了:const addData=payload=>{if(condition==true){dispatch({type:'ADD_SOMETHING',payload});return dispatch({type:'UPDATE_SOMETHING'});但我也从条件中得到不同的变量值。可能是什么问题@巴里·迈克尔·道尔你试过我最新的答案了吗?如果这不起作用,你会向我们展示你的全部组件,这样我们才能真正看到整个画面(不是孤立的)。我不太清楚你想达到什么目的。@如果
b
的长度不是你期望的那么长,那么问这个问题听起来像是个问题。您还可以使用多个效果,一个“onMount”效果用于比较和分派,另一个用于在
a
b
更新时简单分派。是的,请用你们的代码更新这个问题,这样你们的要求就更清楚了。