繁体   English   中英

如何更新 State React Hooks?

[英]How to Update State React Hooks?

我是 React 的新手,我尝试学习钩子。 我可能有一个基本问题,但我不明白为什么。 我确定了一个钩子 state 但我无法更新它。

我的代码:

function Top(props) {

const [URL, setURL] = useState();
const [Category, setCategory] = useState();

const { handleSubmit, handleChange } = useFormik({
    initialValues: {},
    onSubmit: values => {
        clickCrawlButton(values)
    },
});

const clickCrawlButton = (values) => {
        fetch(props.baseURL + "/reddit_top", requestOptionsPost)
        .then(response => response.json())
        .then(result => {
            setURL(result) // Why did not it work ?
            props.setInfoText("Crawl Process Started ...")
        }).catch(error => console.log('error', error));
}
return (
   <div>
     {URL}
   </div>
);

额外的信息:

我打印到控制台。代码详情

状态没有更新,但结果已经到来。

我打印到控制台,但尽管 state 没有更新,结果打印到控制台。

setData之后控制台Data时,您确实犯了错误。 setData异步工作,当您控制台数据时,它尚未更新。

//incorrect
setData(result);
console.log("Result data" + Data);

您可以使用依赖项检查useEffect中的Data更改。

//correct
const clickCrawlButton = (values) => {
    fetch(props.baseURL + "/reddit_top", requestOptionsPost)
    .then(response => response.json())
    .then(result => {
        setData(result)
        props.setInfoText("Crawl Process Started ...")
    }).catch(error => console.log('error', error));
}

useEffect(() => {
     console.log("Result data" + Data);
}, [Data])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM