当前位置: 首页 > 知识库问答 >
问题:

在useffect中使用useState

孔建柏
2023-03-14

我正在使用useState设置文本输入,我正在使用use效应覆盖后退按钮的行为。

const [text, setText] = useState("");

  <TextInput
    onChangeText={text => setText(text)}
    defaultValue={text}
  /> 

  const printVal() {
    console.log("text is " + text);
  }

 useEffect(() => {
    navigation.setOptions({
      headerLeft: () => (
        <HeaderBackButton onPress={() => printVal()} />
      )
    });
  });

这总是导致记录的文本成为useState的初始值。如果我不使用useEffect,它可以工作,但我不想在每次更改时都设置导航选项。我可以从useEffect中的useState获取当前值,还是需要其他解决方案?

共有1个答案

东方海
2023-03-14

您可以添加一个空数组,如果您希望您的函数在组件加载时只被调用一次,或者对于这个例子,您应该添加文本作为依赖项,因为use效应取决于这个值

 useEffect(() => {
    navigation.setOptions({
      headerLeft: () => (
        <HeaderBackButton onPress={() => printVal()} />
      )
    });
  }, [text]);  //<- empty array here
 类似资料:
  • 我是新来的反应,我有以下问题:use效应是更新无限次,但我只是希望它更新的数据,当我插入一个新的记录,我将不胜感激,如果有人能纠正我。 这是我的代码: 指数js 如果我加上第二个参数useffect()= 我做错了什么?创建用户是完美的工作,我只是想在同一时间在表

  • 我在使用useEffect时搜索了很多关于无限循环的帖子,但仍然没有找到答案 在useEffect中,我试图调用get accounts api,当然,我放置了一个空数组,因为我只希望它在渲染后运行一次。但目前我喜欢添加“addAccount”功能。因此,如果我按下add按钮,它就会发送一个post请求。这里是一个问题,我想检查值是否已更改,因此我将值放入第二个参数,即空数组,它会导致无限循环。但

  • 我想更新商店中的值只有一次在第一次打开时,页面首次使用反应钩子打开。为此,我做了第二个参数的使用效果'[]'空列表。没有什么可以阻止它工作,但是我从ESLint规则中得到了一个警告:React Hook用效果有一个缺失的依赖项:“ChangeCount”。要么包含它,要么删除依赖数组react-追踪器/穷举-deps。如何删除此警告?

  • 我试图转换一个简单的React组件与一个this.setstate回调到一个功能组件与useState/使用效果,但我不能复制相同的功能与后者。 我正在使用一个简单警报/通知系统的示例来在超时后追加和删除警报。沙箱: https://codesandbox.io/s/class-and-function-callback-comparison-54tus?file=/src/index.js 相关

  • 我有一个类组件,它返回使用Redux存储完全填充的状态: 但是,当我将上面的类组件切换到下面的功能组件,以便可以在代码中使用ReactJS钩子时,状态始终为空。

  • 我一直在试图理解什么时候取消订阅(在use效应中的回调)会被准确地调用。 这是代码笔链接:https://codepen.io/deen_john/pen/eYmNdMy代码: 问题:在我的例子中,使用效果钩子中的回调函数(即取消订阅),每次我点击按钮时都会被调用(即每次我更新按钮状态)。但是,根据React留档,use效应中的回调工作类似于组件WillUnMount生命周期,所以在我的例子中,它