REACT Props 在 useEffect 中未定义
REACT Props is undefined in useEffect
我是 Reactjs 的新手,我有一个问题。
在我的父组件中,我向子组件发送了一个产品 ID:
<Review id={prod.id}/>
我需要产品 ID 才能在子组件中调用 API
export default function Index(props) {
const [pagenum, setPageNum] = useState(0);
const [reviewList, setReviewList] = useState([]);
useEffect(() => {
get(`/public/product/rate?pagenum=${pagenum}&size=4&id=${props.id}`).then((response) => {
if (response.status === 200) {
console.log(response.data);
setReviewList(response.data);
}
});
}, [pagenum]);
return (
<>
Hello {props.id}
{
reviewList.map((review) => (
<div>{review.id}</div>
))
}
</>
);}
但是 prod.id 是 return 未定义的,所以我不能调用 API。我有什么办法可以将 Id 发送到子组件?
您可以将 id
添加到依赖数组。 (code sandbox)
更新了代码沙箱。根据您的需要。请根据您的 url 和参数更新
import React, {
useState,
useEffect
} from "react";
import "./styles.css";
function Index(props) {
const [pagenum, setPageNum] = useState(0);
const [reviewList, setReviewList] = useState([]);
useEffect(() => {
//https://api.github.com/users/shawnquinn
//`/public/product/rate?pagenum=${pagenum}&size=4&id=${props.id}`
fetch(
`https://api.github.com/users/shawnquinn?pagenum=${pagenum}&id=${props.id}`
).then((response) => {
console.log("SUccess");
if (response.status === 200) {
console.log(response.data);
setReviewList(response.data || []);
}
});
console.log("Id, ", props.id);
}, [props.id, pagenum]);
return ( <
>
Hello {
props.id
} {
reviewList.map((review) => ( <
div > {
review.id
} < /div>
))
} <
/>
);
}
export default function App() {
const [id, setId] = useState(0);
return ( <
div className = "App" >
<
button onClick = {
() => {
setId((prev) => prev + 1);
}
} >
Increase Id {
" "
} <
/button> <
Index id = {
id
}
/> <
/div>
);
}
我是 Reactjs 的新手,我有一个问题。
在我的父组件中,我向子组件发送了一个产品 ID:
<Review id={prod.id}/>
我需要产品 ID 才能在子组件中调用 API
export default function Index(props) {
const [pagenum, setPageNum] = useState(0);
const [reviewList, setReviewList] = useState([]);
useEffect(() => {
get(`/public/product/rate?pagenum=${pagenum}&size=4&id=${props.id}`).then((response) => {
if (response.status === 200) {
console.log(response.data);
setReviewList(response.data);
}
});
}, [pagenum]);
return (
<>
Hello {props.id}
{
reviewList.map((review) => (
<div>{review.id}</div>
))
}
</>
);}
但是 prod.id 是 return 未定义的,所以我不能调用 API。我有什么办法可以将 Id 发送到子组件?
您可以将 id
添加到依赖数组。 (code sandbox)
更新了代码沙箱。根据您的需要。请根据您的 url 和参数更新
import React, {
useState,
useEffect
} from "react";
import "./styles.css";
function Index(props) {
const [pagenum, setPageNum] = useState(0);
const [reviewList, setReviewList] = useState([]);
useEffect(() => {
//https://api.github.com/users/shawnquinn
//`/public/product/rate?pagenum=${pagenum}&size=4&id=${props.id}`
fetch(
`https://api.github.com/users/shawnquinn?pagenum=${pagenum}&id=${props.id}`
).then((response) => {
console.log("SUccess");
if (response.status === 200) {
console.log(response.data);
setReviewList(response.data || []);
}
});
console.log("Id, ", props.id);
}, [props.id, pagenum]);
return ( <
>
Hello {
props.id
} {
reviewList.map((review) => ( <
div > {
review.id
} < /div>
))
} <
/>
);
}
export default function App() {
const [id, setId] = useState(0);
return ( <
div className = "App" >
<
button onClick = {
() => {
setId((prev) => prev + 1);
}
} >
Increase Id {
" "
} <
/button> <
Index id = {
id
}
/> <
/div>
);
}