0i0

中文文档
0.0.31发布于 2021/03/05MITCommonJS

use redux like api, but achieve context like api nested in component

原始使用文档
文档目录4 节
  1. demo
  2. how to use
  3. install
  4. todo

0i0

use redux like api, but achieve context like api nested in component

demo

https://codesandbox.io/s/0i0-yq1n3

how to use

install

yarn add 0i0

it need a root just like Context

import React, { useState } from "react";
import Num1 from "./num1";
import Num2 from "./num2";
import { Provider } from "0i0";

export default function App() {
  const [num1, setNum1] = useState(0);
  const [num2, setNum2] = useState(0);
  return (
    <Provider
      value={{
        num1,
        setNum1,
        num2,
        setNum2
      }}
    >
      <Num1 />
      <Num2 />
    </Provider>
  );
}

Select state in fuction component:

import React, { memo } from "react";
import { useSelector } from "0i0";

function Num2() {
  console.log("i am rendering");
  const num2 = useSelector((state) => state.num2);
  const setNum2 = useSelector((state) => state.setNum2);
  return (
    <div>
      {num2}
      <button onClick={() => setNum2((num) => num + 1)}>num2 add one</button>
    </div>
  );
}

export default memo(Num2);

select state in class component:

import React, { memo } from "react";
import { connect } from "0i0";

class Num1 extends React.Component {
  render() {
    console.log("i am rendering");
    const { num1, setNum1 } = this.props;
    return (
      <div>
        {num1}
        <button onClick={() => setNum1((num) => num + 1)}>
          {" "}
          num1 add one{" "}
        </button>
      </div>
    );
  }
}

export default memo(connect(({ num1, setNum1 }) => ({ num1, setNum1 }))(Num1));

todo

  • test case
  • CICD
  • Fix Cannot update a component problem

版本与发布记录

0i0 共发布 33 个版本,首次发布于 2020/10/12;过去 12 个月发布了 0 个版本。

版本发布日期距今
0.0.31latest2021/03/055 年前
0.0.302021/03/055 年前
0.0.292020/12/225 年前
0.0.282020/12/225 年前
0.0.272020/11/016 年前
0.0.262020/11/016 年前

关于 0i0 的常见问题

0i0 是什么?

使用类似redux的api,但实现类似上下文的api嵌套在组件中

如何安装 0i0?

在项目目录运行 npm install 0i0,或使用 pnpm add / yarn add / bun add。

0i0 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/0i0 是否存在。

0i0 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

0i0 可以商用吗?

0i0 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

0i0 还在维护吗?

最新版本 0.0.31 发布于 2021/03/05(5 年前);至今共发布 33 个版本,其中过去 12 个月发布了 0 个;首次发布于 2020/10/12。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。