为什么在 useEffect 中创建的按钮不能正常工作

时间:2021-05-03 07:44:09

标签: react-native

我有两个按钮,它们像这样调用相同的函数:

这个按钮是在 useEffect 中创建的。

  useEffect(() => {
    navigation.setParams({
      TopRightButton: (
        <ConfirmButton
          callback={() => ApiCall()}
         
        />
      ),
    });
 
  }, []);

这是渲染中的第二个按钮

 <TouchableOpacity onPress={()=> ApiCall()}><Text>Add</Text></TouchableOpacity>

这是函数:

  const ApiCall = () => {
    console.log('name', Name);
  };

我使用 useState 更改名称。当我单击第二个按钮 TouchableOpacity 时,它会显示我的名字。但是,当我单击在 useEffect 中创建的第一个按钮时,没有任何反应。我的意思是,名称为空。为什么会这样?

有什么建议吗?

编辑:

  const [Name, setName] = useState('');

2 个答案:

答案 0 :(得分:1)

你会尝试这种方式吗?

const ApiCall = () => {
 console.log('name', Name);
};
useEffect(() => {
navigation.setParams({
  TopRightButton: (
    <ConfirmButton
      callback={() => ApiCall()}
     
    />
  ),
});

}, [Name]);

答案 1 :(得分:0)

您应该提供有关第一个按钮的更多信息,我猜它是您想显示在​​堆栈导航器标题右侧的按钮,如果是这种情况,您应该不要使用 { {1}}。

如果您想配置您的导航器,您应该使用 setParams

因此,在您想要在其标题中添加按钮的屏幕中,您必须改为在 navigationOptions 内调用 setOptions。查看 docs 以了解有关如何实现这一目标的更多信息。