React 16.8 新特性Hook

React 16.8 新特性Hook

  1. Hook可以在不使用class情况,用state和其他的react特性,完全使用function的形式书写组件,可读性更高了

  2. 另外要记住Hook:
    完全可选的—即无序重写已有代码,可以在任何组件中直接使用Hook
    100% 向后兼容的—不包含任何破坏性改动
    没有计划从React中移除class,对Hook的使用更多是采用渐进式策略
    Hook不会影响你对React概念的理解

  3. 发明Hook的动机
    React的组件没有可复用性的功能(例如,把组件连接到 store),你只能使用 render props 和 高阶组件的方法解决此问题,但这很容易形成由 providers,consumers,高阶组件,render props 等其他抽象层组成的组件会形成“嵌套地狱”,这提醒了React开发成员需要为React共享状态逻辑,提供更好的原生途径。
    可以使用Hook从组件中提取状态逻辑,使你无序修改组件结构的情况下,测试和复用状态逻辑。

Hook API

  1. useState
const [state, setState] = useState(initialState);

返回state和更新state的setState,且setState 只能在 子组件调用或者元素中调用,不能在生产setState的函数里调用

function Counter({i}) {
  const [count, setCount] = useState(i);
  setCount(50);//这一行这样是错误
  return (
    <>
      Count: {count}
      <button onClick={() => setCount(50)}>Reset</button>
      <button onClick={() => setCount(prevCount => prevCount + 1)}>+</button>
      <button onClick={() => setCount(prevCount => prevCount - 1)}>-</button>
    </>
  );
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值