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

反应本机useState不自动更新?

冷吉星
2023-03-14

为什么使用状态自动更新?我将按下按钮,不显示文本输入。但是我可以保存文件而不改变。文本输入将显示。对不起,我的英语不好

从“React”导入React,{useState,useffect};从“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;

共有1个答案

仇航
2023-03-14

我有一些建议可以让你的代码更好。

>

  • 如果不使用setState,则不要更改状态值。这本质上是错误的,会导致错误。

      addTextInput = (key) => {
      textInput.push([<TextInput style={{backgroundColor :'#7ACB4A',marginTop:10}} key={key} />]);
      settextInput(textInput);
      console.log(textInput); 
      }
    

    国家仅仅包含价值,它不应该包含不同的东西。您应该在map函数中返回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>
    )
    

    }

  •  类似资料:
    • 问题内容: 我读约阵营,并在“ 鱼钩常见问题解答 ”,我糊涂了关于一些使用案例,似乎有useRef和useState解决方案的同时,我不知道哪条路是正确的方式。 从关于useRef()的“挂钩常见问题”中: “ useRef()钩不仅用于DOM引用。“ ref”对象是通用容器,其当前属性是可变的,并且可以保存任何值,类似于类的实例属性。” 使用 useRef() : 使用 useState() :

    • 据我所知,react-本机样式表不支持min-wide/max-wide属性。 我在里面有一个视图和文本。“自动宽度”中的视图不会通过继承文本元素来调整大小。 如何解决这个问题并使用文本宽度自动设置视图宽度? 我的代码是: 在普通的HTML/CSS中我会这样认识到: 注意:父视图上的flex:1对我没有帮助。文本显示为

    • 所以我在让我的自动角色发挥作用方面遇到了一个小问题,我一直在尝试通过消息对其进行排序。js和在reactionrole中。js,但它仍然给出了同样的问题,想知道是否有人可以帮助将不胜感激,因为我已经通过教程查看了它,除了一些差异,由于不同的文本/细节,它没有帮助 此外,如果这有助于避免错误,我将使用命令处理程序V2 反应角色。js message.js

    • 问题内容: 有人可以解释一下为什么 this.setState 不是函数吗? 我不明白为什么我的代码有错误 谢谢 问题答案: 这是问题。使用。

    • 问题内容: 我正在React Native中开发一个需要使用Web Map Services的移动应用程序。我尚未找到任何允许同时使用WMS并进行本机响应的库或框架。在React(Web)中,我找到了一个。我的问题是: 您是否知道是否存在允许我使用WMS和React Native的任何库或框架,或者是否有可能在React native中集成React(web)库? 谢谢! 问题答案: 我决定使用的

    • 我有一个函数,它运行验证并根据检查结果设置状态变量。我需要通过API调用传递要上传的变量。 我的问题是状态变量没有更新,当我需要在api调用中传递更新的变量时,状态变量正在以初始状态(null)传递。 我该如何着手解决这个问题? 现行代码 更新的代码正在运行