具有组合数据的 Redux

Redux with combined data

我正在使用 web3,它包括从智能合约和其他库获取数据的连接。最后我创建了 2 个切片

然后在应用程序的许多页面中,我使用一个称为“MarketCap”的指标,它是价格数据之间的计算 :

marketCap = circulatingSupply * price 

在根组件中,我这样做了:

...
    useEffect(() => {
        dispatch(initializeProviderContracts({ networkID: chainID, provider }));
        dispatch(getBlockchainData(provider));
        dispatch(getMarketPrices());
    }, [connected]);
...

我对每个组件都这样做:

比较

const component = () => {

// get the states 
const price = useSelector(state => state.market.price);
const circulatingSupply = useSelector(state => state.contracts.token.circulatingSupply);

const marketCap = price * circulatingSupply; // Done several times 

} 

我在 Redux 中找不到任何关于此的提示,最好的方法是什么?我是否需要创建另一个像 metrics 这样的切片并添加一个额外的调度程序?


    useEffect(() => {
        dispatch(initializeProviderContracts({ networkID: chainID, provider }));
        dispatch(getBlockchainData(provider));
        dispatch(getMarketPrices());
        dispatch(computeMetrics()); // could be used to compute marketCap here
    }, [connected]);

还有这些类型的 redux 操作的名称吗?

谢谢!

对于派生值,使用选择器。

// somewhere

export const selectMarketCap = state => state.market.price * state.contracts.token.circulatingSupply;

// in your component

const marketCap = useSelector(selectMarketCap);