react composition api

2020-07-22 11:58:23 +08:00
 noe132

vue composition api 给组件化开发带来了新的逻辑组合方式。但是 我 /公司 /项目 用的是 react 怎么办?

答案是 react composition api!和 mobx 配合,react 也能用上 composition api 。

通过 defineComponent 创建组件,setup 函数只执行一次,返回的 render function 完全由 observable 驱动,可以轻松自由的组合各种数据和逻辑,做到和 vue-composition-api 一样的开发体验,并享受 react 完善的生态和 typescript 的绝佳支持!

项目已有 100% 单元测试覆盖,但当前库还未进入 1.0.0 正式版本,暂时请勿用于生产环境。

安装

yarn add react mobx mobx-react-lite
yarn add @firefox-pro-coding/react-composition-api

github: https://github.com/Firefox-Pro-Coding/react-composition-api

计数器例子:

export const App = defineComponent((props) => {
  const state = observable({ count: 0 })

  onMounted(() => { console.log('mounted') })
  onUnmounted(() => { console.log('unmounted') })

  // observation
  reaction(
    () => state.count,
    () => { console.log('new value is', state.count) },
    { fireImmediately: true },
  )

  const handleAdd = () => { state.count += 1 }
  const handleSub = () => { state.count -= 1 }

  // render function
  return () => (
    <div>
      <div>{state.count}</div>
      <button onClick={handleAdd}>add</button>
      <button onClick={handleSub}>sub</button>
    </div>
  )
})

关于 vue-composition-api: https://vue-composition-api-rfc.netlify.app/

946 次点击
所在节点    前端开发
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/692147

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX