useState bug解释

329 阅读1分钟
import { useReducer } from "react";
import Immutable from "seamless-immutable";

const useData = (initValue = {}) => {
    const fetchReducer = (state, data) => {
        return state.merge(data);
    }
    return useReducer(fetchReducer, Immutable(initValue));
}

export default useData

const [data2,setData]=useState({a:1,b:2,c:3});
    const [data3,setData1]=useData({a:1,b:2,c:3})
    setData({a:3});
    setData1({a:3})
    console.log(data2,data3)
    

由于useState在改变对象时 如果改变某个特定的值 会导致其他属性值丢失。