Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.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 在传递多个参数后调用了两次useEffect_Reactjs_React Redux_React Hooks_Use Effect - Fatal编程技术网

Reactjs 在传递多个参数后调用了两次useEffect

Reactjs 在传递多个参数后调用了两次useEffect,reactjs,react-redux,react-hooks,use-effect,Reactjs,React Redux,React Hooks,Use Effect,我正在使用react-hooks Useffect在组件中加载数据。我面临着一个奇怪的问题,在我的例子中,如果有一些数据来自后端,我必须将其绑定到我的组件,否则默认值应该绑定到我的组件。不幸的是,我的代码在大多数情况下都工作得很好,但有时会显示默认值,即使数据来自后端。实际上,它加载了两次,数据有时会被默认值覆盖 我试过很多方法,但都失败了 useEffect(() => { getReadJson(); getReadAudio(); if (readJ

我正在使用react-hooks Useffect在组件中加载数据。我面临着一个奇怪的问题,在我的例子中,如果有一些数据来自后端,我必须将其绑定到我的组件,否则默认值应该绑定到我的组件。不幸的是,我的代码在大多数情况下都工作得很好,但有时会显示默认值,即使数据来自后端。实际上,它加载了两次,数据有时会被默认值覆盖

我试过很多方法,但都失败了

useEffect(() => {
    getReadJson();
    getReadAudio();

        if (readJson) {
          const Jparse = JSON.parse(readJson);
          console.log("Jparse", Jparse);
          Jparse &&
            Jparse.map((jsondata) => {
              peaksInstance.segments.add({
                startTime: parseFloat(jsondata.startTime),
                endTime: parseFloat(jsondata.endTime),
                labelText: jsondata.segmentData,
                editable: false,
                speakerId: jsondata.speakerId,
              });
              peaksInstance.points.add({
                time: parseFloat(jsondata.endTime),
                editable: false,
              });
            });
        }
        if (peaksInstance.segments._segments.length == 0) {
          debugger;
          const endTime = peaksInstance.player.getDuration();
          peaksInstance.segments.add({
            startTime: 0,
            endTime: endTime,
            labelText: "",
            editable: false,
            speakerId: "",
          });
        }
   
  }, [getReadJson, readJson, getReadAudio, readAudio]);

我是个新手。任何帮助都将不胜感激。提前感谢。

您可以暂时使用这种方式

var isEffect = false
useEffect(() => {
  if (isEffect) { isEffect = false; return;}

  ... code .....
  
  isEffect = true; 
})
这样试试

const isFirstRender = useRef(true);

useEffect(() => {
   if (isFirstRender.current) {

      code...

   }
}, []);