在 React Native 中向状态插入数据

Insert Data to State in React Native

我有一个列表数据和一个用于添加数据的输入类型,所以我为保存数据和渲染它创建了状态。我希望当我在 TextInput 中键入文本时输入,以便添加数据。但是对于这个问题,必须刷新屏幕才能添加数据。

const [dataSubjects, setDataSubject] = useState([
    {
      id: "PPKN",
      name: "Pendidikan Pancasila dan Kewarganegaraan (PPKn)",
    },
    {
      id: "BI",
      name: "Bahasa Indonesia (BI)",
    },
    {
      id: "MAT",
      name: "Matematika (MAT)",
    },
    {
      id: "IPA",
      name: "Ilmu Pengetahuan Alam (IPA)",
    },
    {
      id: "IPS",
      name: "Ilmu Pengetahuan Sosial (IPS)",
    },
    {
      id: "SBDP",
      name: "Seni Budaya dan Prakarya (SBdP)",
    },
    {
      id: "PJOK",
      name: "Pendidikan Jasmani, Olahraga, dan Kesehatan (PJOK)",
    },
  ])

const HandleSubmit = (name) => {
    setText("")
    setDataSubject((prevSubject) => {
      return [{ name, id: Math.random().toString() }, ...prevSubject]
    })
  }

这是状态数据和函数添加数据的代码

<TextInput
                    visible={inputSubject}
                    mode="outlined"
                    placeholder="Type other subject…"
                    underlineColor="transparent"
                    value={text}
                    style={{
                      backgroundColor: theme.colors.surface,
                      fontSize: 14,
                      borderRadius: 4,
                      flex: 1,
                    }}
                    onChangeText={handleChangeText}
                    onSubmitEditing={() => HandleSubmit(text)}
                  />

这是一个 TextInput 代码

您是否正在尝试将您在 <TextInput/> 中键入的任何内容添加为 dataSubjects 中的新项目?如果您是,则可以使用以下两者之一将项目添加到数组:

  1. Array.prototype.unshift() 在数组的开头添加一个项目
  2. Array.prototype.push() 在数组末尾添加一个项目

具体来说,你可以这样尝试:

const HandleSubmit = (name) => {
    setText("")
    setDataSubject(dataSubjects.unshift({name: name, id: Math.random().toString()})
  }