4.4.2 • Published 8 months ago

@helux/hooks-impl v4.4.2

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

helux-hooks-impl

useObject

使用普通对象,需注意此接口只接受普通对象,应用里使用 useObject 替代 React.useState 将享受到以下两个好处

  • 方便定义多个状态值时,少写很多 useState
  • 内部做了 unmount 判断,让异步函数也可以安全的调用 setState,避免 react 出现警告 : "Called SetState() on an Unmounted Component" Errors
const [obj, setObj] = useObject({ num: 1, age: 2 });
setObj({ num: 2 }); // 只需要传修改的值即可,内部会自动合并

useMutable

深层次的修改需要使用 useMutable 替代 useObject

const [state, setState] = useMutable({ info: { age: 1 } });
setState((draft) => (draft.info.age = 2));

useEffect

对齐 React.useEffect,但优化了调用逻辑,即 strict 模式与普通模式行为一致,只有一次 mount 与 unmount 产生

import { useEffect } from 'helux';

function Comp() {
  useEffect(() => {
    log('helux.useEffect', 'print one time at strict mode');
    return () => log('helux.useEffect', 'cleanup');
  }, []);
  React.useEffect(() => {
    logRed('React.useEffect', 'print 2 times at strict mode');
    return () => logRed('React.useEffect', 'cleanup');
  }, []);
  return <MarkUpdate>test useEffect</MarkUpdate>;
}

useStable

生成稳定的对象,对象的所有方法将转为稳定引用,且回调里始终可以读到外部的最新值,无闭包陷阱

function Comp(props: any) {
  const [obj, setObj] = useObject({ num: 1 });
  // srv 是稳定的,srv.readState,srv.readProps,srv.changeState 是稳定的
  const srv = useStable({
    readState() {
      console.log(`%c read state num ${obj.num}`, `color:green`);
    },
    readProps() {
      console.log(`%c read props num ${props.num}`, `color:green`);
    },
    changeState() {
      setObj({ num: random() });
    },
  });

  // 传入值,则只是返回最新值
  const numTwo = useStable(2);

  // 如传入单函数,则返回的稳定的函数引用
  const fn = useStable(() => {
    console.log(`%c read state num ${obj.num}`, `color:green`);
  });
}
4.4.1

8 months ago

4.4.2

8 months ago

4.4.0

10 months ago

4.3.4

1 year ago

4.3.6

1 year ago

4.3.5

1 year ago

4.3.2

1 year ago

4.3.1

1 year ago

4.3.0

1 year ago

4.2.7

1 year ago

4.2.6

1 year ago

4.2.5

1 year ago

4.2.4

1 year ago

4.2.3

1 year ago

4.2.2

1 year ago

4.2.1

1 year ago

4.2.0

1 year ago

4.1.6

1 year ago

4.1.5

1 year ago

4.1.4

1 year ago

4.1.3

1 year ago

4.1.2

1 year ago

4.1.1

1 year ago

4.1.0

1 year ago

4.0.3

1 year ago

4.0.2

1 year ago

4.0.1

1 year ago

4.0.0

1 year ago

3.6.14

1 year ago

3.6.13

1 year ago

3.6.12

1 year ago

3.6.11

1 year ago

3.6.10

1 year ago

3.6.6

1 year ago

3.6.5

1 year ago

3.6.9

1 year ago

3.6.8

1 year ago

3.6.7

1 year ago

3.6.2

1 year ago

3.6.1

1 year ago

3.6.4

1 year ago

3.6.3

1 year ago

3.5.23

1 year ago

3.5.22

1 year ago

3.6.0

1 year ago

3.5.21

1 year ago

3.5.19

1 year ago

3.5.18

1 year ago

3.5.17

1 year ago

3.5.16

1 year ago

3.5.20

1 year ago

3.5.15

2 years ago

3.5.14

2 years ago

3.5.13

2 years ago

3.5.12

2 years ago

3.5.11

2 years ago

3.5.10

2 years ago

3.5.7

2 years ago

3.5.6

2 years ago

3.5.9

2 years ago

3.5.8

2 years ago

3.5.5

2 years ago

3.5.4

2 years ago

3.5.3

2 years ago

3.5.2

2 years ago

3.5.1

2 years ago

3.5.0

2 years ago

3.4.25

2 years ago

3.4.26

2 years ago

3.4.24

2 years ago

3.4.20

2 years ago

3.4.21

2 years ago

3.4.22

2 years ago

3.4.23

2 years ago

3.4.16

2 years ago

3.4.17

2 years ago

3.4.18

2 years ago

3.4.19

2 years ago

3.4.9

2 years ago

3.4.14

2 years ago

3.4.15

2 years ago

3.4.10

2 years ago

3.4.11

2 years ago

3.4.12

2 years ago

3.4.13

2 years ago

3.4.7

2 years ago

3.4.6

2 years ago

3.4.5

2 years ago

3.4.4

2 years ago

3.4.3

2 years ago

3.4.2

2 years ago

3.4.1

2 years ago

3.3.8

2 years ago

3.3.7

2 years ago

3.3.6

2 years ago

3.3.5

2 years ago

3.3.4

2 years ago

3.3.3

2 years ago

3.3.2

2 years ago

3.3.1

2 years ago

3.2.7

2 years ago

3.2.6

2 years ago

3.2.5

2 years ago

3.2.2

2 years ago