【问题标题】:react native lifecycle, loop in useEffect反应原生生命周期,在useEffect中循环
【发布时间】:2021-05-01 02:00:06
【问题描述】:

我的console.log 后面是命令tts1,tts2,你好这是我的结果 我想要它按顺序你好这是我的结果,tts1,tts2。关于生命周期钩子,我对此很陌生。我尝试了 setState ,它就像一个循环,我希望每次按下按钮时它都会改变

export default function Todoscr({route, navigation}) {
  try {
    var {item} = route.params;
    console.log(`hahaahhihii:${item}`);
    AsyncStorage.setItem(item, JSON.stringify('abc'), () => {
      console.log(`success`);
    });
  } catch {}
useEffect(() => {
    tts();
  });
  const tts = () => {
    danhsachTTS;
    AsyncStorage.getAllKeys((err, result) => {
      console.log(`Hello this is result:${result}`);
      //@ts-ignore
      danhsachTTS = result;
      return result;
    });
  };
  console.log(`tts1`);
return (
    <SafeAreaView style={styles.containner}>
      {console.log(`tts2`)}
      <FlatList
        data={danhsachTTS}
        // data={DSTTS}
        renderItem={({item}) => Item(item)}
      />
      <Button
        onPress={() => {
          navigation.navigate('AddElement');
        }}
        title="Add items"
      />
    </SafeAreaView>
  );
}

【问题讨论】:

    标签: react-native tsx


    【解决方案1】:

    添加 useEffect 依赖项

    useEffect(()=&gt;{},[/* dependencies array */])

    另外,要保留值状态,请尝试使用 useState 挂钩

    const [state, setState] = useState()

    【讨论】:

      【解决方案2】:

      我猜你的 usefeect() 有问题

      1.没有第二个参数,

      useEffect(()=>{})
      

      每次渲染每个组件时都会调用。

      2.第二个参数为[]

        useEffect(()=>{},[])
      

      只有在组件挂载(第一次)时才会调用

      3.第二个参数传入的一些参数

       useEffect(()=>{},[arg])
      

      它会在参数值改变时调用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-02-02
        • 2018-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-14
        相关资源
        最近更新 更多