我正在改变我的状态.调试时,我判断了状态是否真的发生了变化.但该组件没有更新.

Component:

function Cliente(props) {
    const dispatch = useDispatch()
    const cliente = useSelector(({ erpCliente }) => erpCliente.cliente)
    const { form, handleChange, setForm } = useForm(null)

...

function searchCepChangeFields() {
    //This call the action and change the store on reducer
    dispatch(Actions.searchCep(form.Cep))  
        .then(() => {   
            // This function is only taking values ​​from the old state. 
            // The useSelector hook is not updating with store
            setForm(form => _.setIn({...form}, 'Endereco', cliente.data.Endereco))
            setForm(form => _.setIn({...form}, 'Uf', cliente.data.Uf))
            setForm(form => _.setIn({...form}, 'Cidade', cliente.data.Cidade))
            setForm(form => _.setIn({...form}, 'Bairro', cliente.data.Bairro))                  
        })
}

Reducer:

 case Actions.SEARCH_CEP:
        {
            return {
                ...state,
                data: { 
                    ...state.data,
                    Endereco: action.payload.logradouro,
                    Bairro: action.payload.bairro,
                    UF: action.payload.uf,
                    Cidade: action.payload.cidade                    
                }
            };
        }  

推荐答案

注意:最好开始使用redux-toolkit来防止引用

在处理物体时,你面临的问题非常常见,

即使你给它一个全新的东西

您需要创建一个新的引用,如下所示:

Object.assign(state.data,data);

return {
  ...state,
  data: { 
    ...state.data,
    Endereco: action.payload.logradouro,
    Bairro: action.payload.bairro,
    UF: action.payload.uf,
    Cidade: action.payload.cidade                    
  }
}

要添加更多内容,您可以了解解决此问题的Immer库

Reactjs相关问答推荐

MUImaterial -ui-如何将文本字段和 Select 分组?

Inbox Enum类型以React组件状态时出现TypScript错误

无法在jest中发布行动

Next.js-图像组件加载问题

Npm运行构建`在Next.js 14中不起作用

将动态元素中的输入数据传输到Reaction

如何将图像(在代码中称为自己)定位在蓝色圈内的点上?我正在使用material UI和Reaction

在Reaction中单击并显示子组件延迟/动画

我如何使用 React toastify (Promise) toast 和邮箱 js

如何使用服务器中的数据自动填充表单字段?

Mui Datepicker 设置了错误的日期

是否可以直接在 jsx 标签上使用 CSS 定义的 colored颜色 ?

在react的useEffect钩子中,我的函数被调用,但只有第一个函数能够改变状态,第二个函数无法改变状态.

React - 将一个充满空值的无限大小的数组存储在 ref 中是否可以,或者我应该重置数组吗?

为嵌套路由配置一个不存在的 url 的重定向

从其他组件切换 FieldSet

使用 react-router-dom 时弹出空白页面

如何使用 cypress 获取 MUI TextField 的输入值?

ReactJS:按钮启用禁用更改 colored颜色

RTK 查询 POST 方法不会改变数据