为什么useState自动更新?我将按下按钮,而不显示textinput。但我可以保存文件而无需更改。将显示textinput。抱歉,我的英语不好
从'react'导入React,{useState,useEffect}; 从'react-native'导入{Text,TextInput,View,Button,};
const Test = ({navigation}) => {
const [textInput, settextInput] = useState([]);
useEffect(() => {
addTextInput = (key) => {
textInput.push([<TextInput style={{backgroundColor :'#7ACB4A',marginTop:10}} key={key} />]);
settextInput(textInput);
console.log(textInput);
}
},[textInput]);
return(
<View>
<Button title='+' onPress={() =>
addTextInput(textInput.length)} />
{textInput.map((value, index) => {
return value
})}
<Text>{textInput.length}</Text>
</View>
);
}
export default Test;
答案 0 :(得分:0)
我有一些建议可以改善您的代码。
如果未使用'setState',请不要更改状态值。 这本质上是错误的,并会导致错误。
addTextInput = (key) => {
textInput.push([<TextInput style={{backgroundColor :'#7ACB4A',marginTop:10}} key={key} />]);
settextInput(textInput);
console.log(textInput);
}
状态仅包含值,它不应包含其他内容。您应该在地图函数中返回TextInput。
我尝试重写您的代码,对不起,因为我的英语。希望对您有帮助
代码:
const [textInput, setTextInput] = React.useState(['1', '2'])
const addTextInput = (key: string) => {
const tempInput = textInput.concat([key])
setTextInput(tempInput)
}
return (
<View style={{ alignItems: 'center', justifyContent: 'center', flex: 1 }}>
<Button title="+" onPress={() => addTextInput(textInput.length.toString())} />
{textInput.map((value, index) => {
return (
<TextInput style={{ backgroundColor: '#7ACB4A', marginTop: 10, width: '70%' }} key={index + ''} />
)
})}
<Text>{textInput.length}</Text>
</View>
)
}