如何使用React Context API使用点击项中的信息更改状态

时间:2019-05-14 08:14:03

标签: reactjs react-context react-state-management

需要导航并显示已单击项目的产品详细信息。我在控制台日志中返回了正确的项目,但不确定如何编辑/设置状态以及将虚拟文本替换为单击的项目的值。我正在使用内容API进行状态管理,数据来自导入到Context.js中的单独文件。

Context.js

import React, { useState, createContext } from 'react';
import { storeProducts, detailProduct } from './data';

export const ProductContext = createContext();

export const ProductProvider = (props) => {

    const [ products ] = useState(storeProducts);
    const [ dummyDetails ] = useState(detailProduct);

    const getItem = (id) => {
    const product = products.find(item => item.id === id);
    return product;
    }

    const showDetails = (id) => {
        const product = getItem(id);
        console.log(product);
        console.log(dummyDetails);
    };

    const addToCart = (id) => {
    console.log(id);
    };


    return (
        <ProductContext.Provider value={[ products, dummyDetails, showDetails, addToCart ]}>
        { props.children }
        </ProductContext.Provider>
    );
}

我有从getItem函数和2控制台返回的信息。showDetails中的日志为我提供了dummyDetails和产品详细信息。我需要将产品交换为dummyDetails。预先感谢。

1 个答案:

答案 0 :(得分:0)

您可以按功能从useState返回产品来设置产品

const [ dummyDetails, setProduct ] = useState(detailProduct);

const showDetails = (id) => {
   const product = getItem(id);
   setProduct(product);
};