javascript - 如何监听 react hooks 中的 redux 状态变化?

标签 javascript reactjs input redux react-redux

我现在有多个用户可以编辑的表单和按钮,如果 redux 的状态发生变化,我想显示一个按钮保存。

现场演示:display button save when the state changes

这是我的 redux。

const initialState = {
  firstName: "Kunta ",
  lastName: "Kinte",
  age: 35,
  country: "Ghana",
  color: "#000"
};

const DetailsReducer = (state = initialState, action) => {
  const { name, value } = action;

  return { ...state, [name]: value };
};

export default DetailsReducer;

这是我的 js 代码,用于在 redux 状态发生变化时显示保存按钮

    import React, { useState, useEffect } from "react";
    import { useSelector, useDispatch } from "react-redux";
    
    const Settings = () => {
      const fields = useSelector((state) => state);
      const dispatch = useDispatch();
      const [saveBtn, setSaveBtn] = useState(false);
    
      useEffect(() => {
        setSaveBtn(true); // show save btn if there is changes in state
      }, []);
    
      console.log(fields.firstName);
    
      return (
        <div>
          <div>
            <h1>Edit </h1>
            First Name:{" "}
            <input
              name="firstname"
              value={fields.firstName}
              onChange={(e) =>
                dispatch({ name: "firstName", value: e.target.value, type: "" })
              }
            />
            {saveBtn === true && <button className="btn-save">save </button>}
          </div>
        </div>
      );
    };
    
    export default Settings;


  [1]: https://codesandbox.io/s/multiple-inputs-kkm6l?file=/src/Components/Settings.js:0-816

我需要做什么来解决这个问题?

最佳答案

你试过吗?

const fields = useSelector((state) => state.WHATEVER_REDUCER);

useEffect(() => {
    setSaveBtn(true); // show save btn if there is changes in state
}, [fields]);

关于javascript - 如何监听 react hooks 中的 redux 状态变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67165620/

相关文章:

javascript - 使用 JQuery/Javascript 进行滚动控制

javascript - 通过javascript点击获取 'for'值

javascript - 如何在不扩展为列表的情况下减少(...)JavaScript Map 对象的条目?

html - Microsoft Edge 中的切换显示

javascript - 如何在数组javascript中选择伪随机值

reactjs - 如何只打开一个弹出窗口

javascript - React 中的事件冒泡不会停止使用 e.preventDefault()

javascript - reactjs如何将数据从父组件传递到子组件?

jquery - 如何删除焦点输入的默认值

css - 如何使用文本样式创建诸如 stackoverflow 之类的标签