问题描述
为什么我无法从上下文访问我的产品数据?
以下是产品数据的来源:
const Products = props => {
const [user,setUser,addToCart,setChosenImage] = useContext(UserContext);
const [product,productData] = useContext(ProductContext);
...
<div className="product--TopButton--Container">
<button className="about--Button" onClick={() => productData(product._id)}>About</button>
</div>
这里是上下文:
export const ProductContext = React.createContext({})
const ProductProvider = ProductContext.Provider;
const ProductContextProvider = (props) => {
const [product,setProduct] = useState({})
const productData = (id) => {
fetch (`${API}/products/details/${id}`,{
method: 'GET',})
.then (response => response.json ())
.then (response => {
setProduct(response)
})
.then(() => window.location = `/details/${id}`)
.catch (error => {
console.error (error);
})
}
console.log(product)
return (
<ProductProvider value={[product,productData]}>
{props.children}
</ProductProvider>
)
}
export default ProductContextProvider;
注意:console.log 显示正确的产品。但是我无法在 ProductAbout 组件中访问它。
这是我提供它的方式:
<ProductContextProvider>
<Route exact path="/products" component={Products} />
<Route exact path="/details/:id" component={ProductAbout} />
</ProductContextProvider>
这是我尝试使用它的地方:
const ProductAbout = () => {
const [product] = useContext(ProductContext)
console.log(product)
return(
<div>hi{product?.name}</div>
)
}
export default ProductAbout;
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)