javascript 为什么没有文本时按钮没有禁用?

eulz3vhy  于 2023-02-07  发布在  Java
关注(0)|答案(1)|浏览(113)

我是新的React原生,当我创建我的应用程序,我无法得到自动添加按钮禁用工作
我将这些属性设置为钩子:

const [taskText, setTaskText] = useState(null);  
const [isDisabled, setDisabled] = useState('true');

那么我有我的功能:

const addActivity = () => {
    if (taskText == null){
      setDisabled('true');
    }else{
      setDisabled('false');
    }
  }

但是当我在touchableOpacity的禁用属性上使用isDisabled时,它不会更新
文本输入属性:

onChange={() => addActivity()}

可触摸不透明度:

<TouchableOpacity style={styles.addWrapper} onPress={() => handleNewTask()} disabled={isDisabled}>
    <Text style={styles.addText}>+</Text>
</TouchableOpacity>

设置任务文本:(由文本输入调用)

onChangeText={text => setTaskText(text)}

当我删除所有文本时,TextInput不会自动更新吗?我该怎么做才能解决这个问题?

hjzp0vay

hjzp0vay1#

这是因为您用途:useState('true'),并且在你的状态中总是使用字符串。当字符串不为空时,它总是true。
您必须使用布尔值,而不是字符串。因此,您可以更改为:useState(true)并将addActivity更改为:

const addActivity = () => {
    if (taskText == null){
      setDisabled(true);
    }else{
      setDisabled(false);
    }
  }

相关问题