【发布时间】:2020-02-23 22:47:58
【问题描述】:
更新
我的问题出在后端,我的 JSON 没有返回到我的 fetch 调用。愚蠢的错误。下面的前端代码应该可以工作。
我有一个子组件从其父组件接收函数increment()。它的工作是将父组件中的数字加 1。我将它传递给子组件,并希望在子组件中完成获取返回后调用它。但是,它没有被调用。有没有办法做到这一点?
这是父组件:
const Parent = () => {
const [i, setI] = useState(0);
const increment = () => {
console.log("increment called");
setI(i + 1);
}
return (
<div>
<Child increment={ increment } />
</div>
);
}
还有子组件:
const Child = (props) => {
const doSomething = () => {
fetch("/dosomething")
.then((res) => res.json())
.then((json) => {
props.increment(); // <-- want this to be called here
})
.catch((err) => {
console.log("err : ", err);
});
}
return (
<Button onClick={ doSomething }>Do Something</Button>
)
};
【问题讨论】:
-
您确定它确实到达了
props.increment()?在它之前做一个console.log(json),看看它是否到达那里 -
fetch 是异步的,这意味着它应该在 useEffect 挂钩中。
-
@Cornel 啊,你是对的,我的后端有一个问题,没有返回 json。愚蠢的错误。感谢您为我指明正确的方向。上面的代码有效。
标签: reactjs