0.17.0 • Published 3 months ago

resso v0.17.0

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

Create now ➫ 🔗 kee.so


最简单的 React 状态管理器。自动按需 re-render ⚡️

Reactive Elegant Shared Store Object

(支持 React 18、React Native、SSR、小程序等)

npm GitHub Workflow Status npm bundle size npm type definitions GitHub

English · 简体中文

介绍

resso,世界上最简单的 React 状态管理器 →

特性

  • 非常简单 🪩
  • 非常聪明 🫙
  • 非常小巧 🫧

安装

pnpm add resso
# or
yarn add resso
# or
npm i resso

使用

import resso from 'resso';

const store = resso({
  count: 0,
  text: 'hello',
  inc() {
    const { count } = store; // 须在顶层解构(若在方法中用到)
    store.count = count + 1;
  },
});

function App() {
  const { count } = store; // 须在顶层解构(若在 UI 中用到)

  return (
    <>
      {count}
      <button onClick={() => (store.count += 1)}>+</button>
    </>
  );
}

* 顶部解构其实是调用 useState(Hooks 规则,否则将有 React 报错)

Edit resso

API

更新单个

store.count = 60;

store('count', (c) => c + 1);

更新多个

store({
  count: 60,
  text: 'world',
});

store((s) => ({
  count: s.count + 1,
  text: s.text === 'hello' ? 'world' : 'hello',
}));

非 state 变量 (Refs)

事实上它与 resso 无关,只是 JavaScript。你可以这样做:

// store.js
export const refs = {
  total: 0,
};

// App.js
import store, { refs } from './store';

* react<18 批量更新

resso.config({ batch: ReactDOM.unstable_batchedUpdates }); // 在项目入口

按需 re-render

// 没有 text 更新,绝不 re-render
function Text() {
  const { text } = store;
  return <p>{text}</p>;
}

// 只在 count 更新时 re-render
function Count() {
  const { count } = store;
  return <p>{count}</p>;
}

// 没有 state 在 UI 中,绝不 re-render
function Control() {
  return (
    <>
      <button onClick={store.inc}>+</button>
      <button onClick={() => (store.count -= 1)}>-</button>
    </>
  );
}

协议

MIT License (c) nanxiaobei

0.16.0

3 months ago

0.17.0

3 months ago

0.15.0

10 months ago

0.10.0

2 years ago

0.11.0

2 years ago

0.9.0

2 years ago

0.12.0

1 year ago

0.13.0

1 year ago

0.14.0

1 year ago

0.7.0

2 years ago

0.6.0

2 years ago

0.3.0

2 years ago

0.5.0

2 years ago

0.4.0

2 years ago

0.1.0

2 years ago

0.2.1

2 years ago

0.2.0

2 years ago

0.0.5

2 years ago

0.2.2

2 years ago

0.0.4

2 years ago

0.0.6

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago