状态未更新但值存在

时间:2021-03-29 19:35:00

标签: reactjs react-native react-hooks

我正在使用带有图像选择器的 react native 和 expo。出于某种原因,我的choosefromlibrary 函数没有设置状态,因此我可以读取它并插入文件位置以供查看。位置不是必需的,我试过 setImageLocation(result.uri) 无济于事,所以我只是尝试不同的东西。 result.uri 用console.log 打印,位置用console.log 打印,但是当我console.log(imageSelected) 什么都没有返回

const [imageSelected, setImageSelected] = useState("");

const chooseFromLibrary = async () => {
    let location = "";

    let result = await ImagePicker.launchImageLibraryAsync({
      mediaTypes: ImagePicker.MediaTypeOptions.All,
      allowsEditing: true,
      aspect: [4, 3],
      quality: 1,
    });
    location = result.uri;
    setImageSelected(location);
    console.log(imageSelected);
}

1 个答案:

答案 0 :(得分:0)

更改 imageSelected 状态不会反映在您对 chooseFromLibrary 的调用中。该值在您调用该函数的渲染期间固定为任何值。

如果您想对设置为状态的 location 执行某些操作,请直接在函数调用中使用 location(或者您可以每次使用 useEffect 执行某些操作{ {1}} 次更改)。