gpt4 book ai didi

javascript - react 功能组件让变量没有改变

转载 作者:行者123 更新时间:2023-12-01 00:33:15 25 4
gpt4 key购买 nike

我用 React Native 编写了功能组件。但我遇到了麻烦,因为一个奇怪的问题似乎是一个错误。

我的目的是改变 react 功能组件中的变量,但变量没有改变。

--我知道这会通过改变来解决让 isDirty cosnt [isDirty,setIsDirty] = useState(false)

为什么当handleTitleChange事件发生时“isDirty”没有改变?

在纯js中,效果很好

更新.tsx

import React, { useState } from 'react';
import { View, TextInput, CheckBox, Button } from 'react-native';
import { NavigationInjectedProps } from 'react-navigation';
import TodoItem from '../models/todoItem';
import { updateItem } from '../DataProvider';

interface UpdateProps extends NavigationInjectedProps {
}

const Update: React.FC<UpdateProps> = (props) => {
const [item, setItem] = useState(props.navigation.getParam("item") as TodoItem)
let isDirty=false

const handleSave=()=>{
updateItem(item)

if(isDirty&&props.navigation.state.params)
{
props.navigation.state.params.onUpdated(item);
}
props.navigation.goBack();
}

const handleCompleteChange= (value:boolean)=>{
isDirty=true
setItem({...item,isComplete:value})
}

const handleTitleChange=(txt:string)=>{
isDirty=true
setItem({...item,title:txt})
}

const handleContentChange=(txt:string)=>{
isDirty=true
setItem({...item,contents:txt})
}

return <View>
<CheckBox value={item.isComplete} onValueChange={handleCompleteChange}></CheckBox>
<TextInput defaultValue={item.title} onChangeText={handleTitleChange}></TextInput>
<TextInput defaultValue={item.contents} onChangeText={handleContentChange}></TextInput>
<Button title="Save" onPress={handleSave}></Button>
</View>;
};

export default Update

纯js

const Update = () => {
let isDirty=false;

const handleTitleChange=(txt)=>{
console.log(isDirty);
isDirty=true;
console.log(isDirty);
}
handleTitleChange("a");
handleTitleChange("b");
};


Update();

最佳答案

isDirty 既不是 prop 也不是 state。所以就没有坚持下去了。重新渲染时,它将初始化回 false

将其设为状态

const [isDirty, setDirty] = useState(false)

关于javascript - react 功能组件让变量没有改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58344165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com