Logo image
GitHub LinkedIn

Grokking Simplicity FP CH14

Relume placeholder avatar
張三

2022年1月11日

5分鐘閱讀

Relume placeholder image

《簡約的軟體開發思維:用 Functional Programming 重構程式》CH14

目錄

Ch14. 處理巢狀資料的函數式工具

  • 建立高階的 hash map

章節重點

const [form, setForm] = useState({
  name: "",
  email: "",
  age: "",
});

const setVal = (key, value) => {
  setForm({
    ...form,
    [key]: value,
  });
};

<input
  type="text"
  value={form.name}
  onChange={(e) => setVal("name", e.target.value)}
/>;
const update = (key, value) => {
  return (obj) => ({
    ...obj,
    [key]: value,
  });
};

const nestedUpdate = (path, value) => {
  return (obj) => {
    const [key, ...rest] = path.split(".");
    return {
      ...obj,
      [key]:
        rest.length > 0 ? nestedUpdate(rest.join("."), value)(obj[key]) : value,
    };
  };
};

章節提問

探索更多精彩內容

繼續閱讀,了解更多技術與個人經歷的精彩文章。