代码之家  ›  专栏  ›  技术社区  ›  Ahmed Bn

从zustand商店获取空数组

  •  0
  • Ahmed Bn  · 技术社区  · 1 年前

    我正在尝试从zustand商店获取获取获取的数组,但返回时为空。

    script.jsx

    const store = Zstore();
    
    const params = useParams();
    
    useEffect(() => {
        store.fetchStock(params.id);
    }, []);
    
    
    console.log(store.stock); // Empty array
    

    Zstore.js

    import { create } from 'zustand';
    import axios from 'axios';
    
    const Zstore = create((set) => ({
        stock: [],
    
        fetchStock: async (id) => {
        
            const res = await axios.get('http://127.0.0.1:8000/searchList/')
            const stock = res.data.filter((stock) => stock.symbol == id.toUpperCase()).map((stock) => {
                return {
                    symbol: stock.symbol,
                    name: stock.name,
                }
            });
            set({stock});
                    console.log(stock); // Array not empty
        },
    }));
    
    export default Zstore;
    

    我确实试图添加 store.stock.length 作为对的依赖项 useEffect 但无济于事。

    1 回复  |  直到 1 年前
        1
  •  0
  •   Akalanka Dissanayake    1 年前

    由于状态更改,您的组件似乎没有重新报价, 尝试以这种方式更新您的组件, 您的店铺选择应该如下const stock = Zstore(state => state.stock);

      const params = useParams();
      const stock = Zstore(state => state.stock);
    
      useEffect(() => {
        Zstore.getState().fetchStock(params.id);
      }, [params.id]);
    
      // This will re-render the component when `stock` changes, displaying the updated data.
      console.log(stock);