У меня очень странная проблема с React Native useState и useEffect, и я не могу решить ее. У меня есть простая форма, но я сократил все компоненты до одного TextInput
import React, { useState, useEffect } from 'react'
import { TextInput } from 'react-native'
const InputExample = () => {
const [name, setName] = useState('')
useEffect(() => {
console.log('1:', name)
console.log('2:', name)
}, [name])
return (
<TextInput
placeholder="First name"
maxLength={100}
value={name}
onChangeText={(text) => setName(text)}
style={{ margin: 20, fontSize: 20, borderColor: 'black', borderWidth: 1, padding: 10 }}
/>
)
}
export default InputExample
Как должно работать useEffect
, на мой взгляд, здесь каждый раз выводится текущее состояние, например
// First Render - Text Input 'P'
1: {firstName: "P"}
2: {firstName: "P"}
// Second Render - Text Input 'Pe'
1: {firstName: "Pe"}
2: {firstName: "Pe"}
etc..
Но я получаю
// First Render - Text Input 'P'
1: {firstName: "P"}
// Second Render - Text Input 'Pe'
2: {firstName: "P"}
1: {firstName: "Pe"}
Итак, я получаю смесь состояний (предыдущих и старых)