React Native-React Hooks-useState不会立即更新我的状态

时间:2020-08-26 14:59:18

标签: javascript reactjs react-native react-hooks

我正在尝试通过convert函数传递更新后的值,以在每次状态更新时显示新结果,但是似乎状态“ const [values]”不会立即更新,并且我从先前的状态值中获取结果。因此,随着每一次价值变化,我的结果都落后了一步。在控制台中,我可以看到我正在从输入中获取新值,但是“值”状态显示了先前的值。

const [values, setValues] = useState({
        sqmtr: "",
        sqft: "",
    });
  
  const handleTextChange = (text, name) => {
        setValues({ ...values, [name]: text });
        convert(unit, values);
                console.log(text);
                console.log(values);
    };
<TextInput
  style={styles.inputField}
  defaultValue={values.sqmtr}
  onChangeText={(text) =>
    handleTextChange(text, "sqmtr")}
  placeholder="0"
  keyboardType={"numeric"}
/>

3 个答案:

答案 0 :(得分:0)

它工作正常,因为setState是异步的。新的设置值将在新的组件渲染中看到。

答案 1 :(得分:0)

const handleTextChange = (text, name) => {
  const value = { ...values, [name]: text }
  // `setValues` is async. so use the value directly
  setValues(value);
  convert(unit, value);
  console.log(text);
  console.log(values);
};

答案 2 :(得分:-1)

在记录结果之前使用async / await

const handleTextChange = async(text, name) => {
       await setValues({ ...values, [name]: text });
       await convert(unit, values);
                await console.log(text);
                await console.log(values);
    };