Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.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 - Fatal编程技术网

Javascript 我能';我不理解此代码(用于React/Redux)是如何工作的

Javascript 我能';我不理解此代码(用于React/Redux)是如何工作的,javascript,reactjs,redux,Javascript,Reactjs,Redux,我有一个问题要问React/Redux 我正在制作一个web应用程序。它以我希望的方式完美工作,没有任何问题。尽管我不明白。我不明白的部分就是这一部分 这是我的密码 const myApps = () => { let myInfo = {}; const form = []; form.push(<div>what</div>); myInfo = form.reduce((prev, element, index) => { pre

我有一个问题要问React/Redux

我正在制作一个web应用程序。它以我希望的方式完美工作,没有任何问题。尽管我不明白。我不明白的部分就是这一部分

这是我的密码

const myApps = () => {
  let myInfo = {};
  const form = [];
  form.push(<div>what</div>);
  myInfo = form.reduce((prev, element, index) => {
    prev[index] = {isTrue : false};
    return prev;
  }, {});
}

useEffect(() => {
    uploadToRedux(myInfo); // this is redux dispatch. I upload to redux "only" here.
}, []);

myInfo[0].isTrue = true;

if (myInfo[0].isTrue) console.log('Correct!');
else console.log('Incorrect!');
constmyapps=()=>{
让myInfo={};
常量形式=[];
推(什么);
myInfo=表单.reduce((上一个,元素,索引)=>{
prev[index]={isTrue:false};
返回上一个;
}, {});
}
useffect(()=>{
uploadToRedux(myInfo);//这是redux调度。我在这里“仅”上传到redux。
}, []);
myInfo[0]。isTrue=true;
if(myInfo[0].isTrue)console.log('Correct!');
else console.log('error!');
仅当使用useffect
myInfo
发送到Redux时,我才使用
componentDidMount
。顺便说一下,当我切换myInfo[0].isTrue=true时,redux中的状态会同时改变。即使我没有发邮件


当然,这是我想要的,但是即使我没有发送消息,redux中的状态是否有任何变化?这怎么可能呢?

我知道,当您请求服务器(API)将数据返回给您时,您需要调度自己。所以它需要是异步的,但当它不是异步的时候,你只需要将数据传递到存储,它就会自动调度

因此,无论何时数据在延迟后返回,它都是一个异步请求,当您收到数据时,您需要调度数据。(如果您不这样做,您可能会得到一个错误,因为redux发送了一个未定义的数据)


我希望它能对您有所帮助。

据我所知,当您请求服务器(API)向您返回数据时,您需要自行调度。所以它需要是异步的,但当它不是异步的时候,你只需要将数据传递到存储,它就会自动调度

因此,无论何时数据在延迟后返回,它都是一个异步请求,当您收到数据时,您需要调度数据。(如果您不这样做,您可能会得到一个错误,因为redux发送了一个未定义的数据)


我希望它能对您有所帮助。

请注意,您正在将一个函数作为回调传递给
useffect()

() => {
  uploadToRedux(myInfo); // this is redux dispatch. I upload to redux "only" here.
}
useffect()
将立即执行,但匿名函数(回调)将计划由JS运行时执行(即准备执行,但实际上尚未执行)

当回调即将在redux中执行和更新值时,JS运行时将已经在useffect()之后执行了这些行,即在redux更新之前将执行以下代码行:

myInfo[0].isTrue = true;

if (myInfo[0].isTrue) console.log('Correct!');
else console.log('Incorrect!');
所以当JS运行时将执行以下行:

uploadToRedux(myInfo);
myInfo[0]的值。isTrue
将被更新,并将被重新使用

这种现象被称为回调地狱。要了解更多信息,请阅读以下内容:

确实,请在redux更新之前记录myInfo[0]的值

useEffect(() => {
  console.log("myInfo[0].isTrue", myInfo[0].isTrue);
  uploadToRedux(myInfo); // this is redux dispatch. I upload to redux "only" here.
}, []);

请注意,您正在将函数作为回调传递给
useffect()

() => {
  uploadToRedux(myInfo); // this is redux dispatch. I upload to redux "only" here.
}
useffect()
将立即执行,但匿名函数(回调)将计划由JS运行时执行(即准备执行,但实际上尚未执行)

当回调即将在redux中执行和更新值时,JS运行时将已经在useffect()之后执行了这些行,即在redux更新之前将执行以下代码行:

myInfo[0].isTrue = true;

if (myInfo[0].isTrue) console.log('Correct!');
else console.log('Incorrect!');
所以当JS运行时将执行以下行:

uploadToRedux(myInfo);
myInfo[0]的值。isTrue
将被更新,并将被重新使用

这种现象被称为回调地狱。要了解更多信息,请阅读以下内容:

确实,请在redux更新之前记录myInfo[0]的值

useEffect(() => {
  console.log("myInfo[0].isTrue", myInfo[0].isTrue);
  uploadToRedux(myInfo); // this is redux dispatch. I upload to redux "only" here.
}, []);