美文网首页
告别编写繁琐的 react state handler

告别编写繁琐的 react state handler

作者: b710c1e7a319 | 来源:发表于2019-02-23 23:38 被阅读21次

react-powerplug 是一个封装各种常见 数据操作逻辑的 react 组件库。

它可以用来干什么呢?一句话:抽象并简化你的 react state 操作!

简单做个对比。

假设需要做一个 react 计数器,那么通常来说,我们需要手动编写一些 state 操纵函数,代码可能会写成这样:

class MyCounter extends React.Component {
  state = {
    cnt: 0
  }

  handleInc = () => {
    const cnt = this.state.cnt + 1;
    this.setState({ cnt });
    doSomething(cnt);
  }

  handleDec = () => {
    const cnt = this.state.cnt - 1;
    this.setState({ cnt });
    doSomething(cnt);
  }

  render() {
    return (
      <div>
        <h1>Count: ${this.state.cnt}</h1>
        <button onClick={this.handleInc}>Inc</button>
        <button onClick={this.handleDec}>Dec</button>
      </div>
    )
  }
}

看上去问题不大。但如果业务开始逻辑膨胀,交互复杂起来,那我们需要编写更多的 state change handler。这些 handler 的大量存在会一定程度上干扰我们阅读业务逻辑代码。

所以我们是不是可以抽象一下,把这种通用的 state change handler 下沉到通用组件里,不和业务代码耦合在一起?

react-powerplug 帮我们做了这些事情。利用这个库,我们可以很大程度上简化上述代码:

import { Counter } from 'react-powerplug';

class MyCounter extends React.Component {

  handleChange = (cnt) => {
    doSomething(cnt);
  }

  render() {
    return (
      <Counter initial={0} onChange={this.handleChange}>
        {
          ({ count, inc, dec }) => (
            <div>
              <h1>Count: {count}</h1>
              <button onClick={inc}>Inc</button>
              <button onClick={dec}>Dec</button>
            </div>
          )
        }
      </Counter>
    )
  }
}

所有和计数器状态相关的数据操作都收拢到了 Counter 组件里,MyCounter 组件只需专注于 doSomething() 这个业务即可!

更好的组件职责划分可以帮助我们持续维护代码质量。react-powerplug 还提供了 List、Map、Toggle 等常见 ui 操作封装组件,具体可参阅官方文档。

相关文章

  • 告别编写繁琐的 react state handler

    react-powerplug 是一个封装各种常见 数据操作逻辑的 react 组件库。 它可以用来干什么呢?一句...

  • React Hook

    react 16.8 以后加上了 react hook,它可以让你在不编写 class 的情况下使用 state ...

  • React

    使用State Hook Hook是React 16.8的新特性,可以让你在不编写clss的情况下使用state以...

  • HOOK—useState、useEffect的使用

    HOOK是React的新增特性,它可以让你在不编写 class 的情况下使用 state 以及其他的 React ...

  • React Hooks

    React Hooks它可以让我们不编写class的情况下使用state以及其他的React特性; useSta...

  • react的Hook-09

    Hook是React16.8的新增特性。它可以让你在不编写class的情况下使用state以及其他的react特性...

  • React组件化(三)-Hooks

    Hooks是React16.8新增的,它可以让你不编写class的情况下使用state及其他React特性。Hoo...

  • Hooks

    简介 Hooks 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state ...

  • hooks

    核心概念:在不编写 class 的情况下使用 state 以及其他的 React 特性 一、useState() ...

  • React Hooks + Context打造简易redux

    Hook是React 16.8的新特性,它可以让在不编写class类组件的情况下使用state以及其他的React...

网友评论

      本文标题:告别编写繁琐的 react state handler

      本文链接:https://www.haomeiwen.com/subject/lpimyqtx.html