Current collected state Current
Observed since 20 Oct, 17:41 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
0i0
use redux like api, but achieve context like api nested in component
use redux like api, but achieve context like api nested in component
https://codesandbox.io/s/0i0-yq1n3
yarn add 0i0
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>
);
}
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);
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));
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
reactEnvironment{
"local_name": "react",
"alias": false,
"peer_metadata": null
} | ^16.13.1 | runtime |
zustandEnvironment{
"local_name": "zustand",
"alias": false,
"peer_metadata": null
} | ^3.1.3 | runtime |
@types/reactEnvironment{
"local_name": "@types/react",
"alias": false,
"peer_metadata": null
} | ^16.9.53 | development |
typescriptEnvironment{
"local_name": "typescript",
"alias": false,
"peer_metadata": null
} | ^4.0.3 | development |
Source distribution
{
"integrity": "sha512-+43GsupdceT2uTMvlufvXtykTRKCRg1rSM3wPN6kBLmBphv2MJuUNR19guxDL2OJySFefc+5cFr5xmhPNBleZA==",
"shasum": "24bbd1f75d89e6abc8deb7741272fa1bb388ea15",
"tarball": "https://registry.npmjs.org/0i0/-/0i0-0.0.17.tgz",
"fileCount": 7,
"unpackedSize": 9739,
"npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjo05CRA9TVsSAnZWagAAl0IP/jt6mw1QE7ZLKV4CiCTN\nYmVdlO6EsFpYgw/zPHlDVByxltSAXArI+7U2qF0pOOrA7bKvoTMcB/JArb3l\nThHR3WJTAza9lOAhSnjpsV4Ihq2zM1NWnYxW8/gIC3Q1ifXtnuxILIOH0K+W\nnL2SDyXLixwJxAsCeNgdUbxxkO4LzPCd2LlWZDgo1MnAu3qbdNuLRpRAoZjl\nnwlxMj0sG58Ed1mXMc210HoEa2TGRkTiG/bPMq/lqo3ihQfu7clRZSPXWdTv\nPVoNG5n2z5v/AGFSGFfMzK0ExQHIl3MGFPJJMiDoAZx+iSPsNsQqLN38bxyB\nhpXKVuiJNzHnTZcyHqobYBPYjnrxyjWnePv75lhN6aRaNmX7QpSE3WuHzgGd\nNAqHF6sn1YWOTA226ba+VdxnD1QGLCyPe/y0TTCNtrUoRoilIk+5zPb0QyDi\nIPG9Y+tql2Cf1CyIRaiYYlq3ykeL/TUcinojDaMtEnK9j2EXHXlHV+352b5i\n+xBNSuXtQiDP4usb45ljZAMfV62aFIkxYLa/SmrBePW0gDeEXW3K4TC4O4sk\n1vuuQJCR3aKx8uAiSvSH1Vbw6+338kA47eJznWIUQn4KUH2zv/8FopD0wQzX\nddRDD+WSMljtc8Puvb13HRmt0dbC55nerplXPDbTtyNxRxpiH3thbu+kQNdl\n75z5\r\n=vh2g\r\n-----END PGP SIGNATURE-----\r\n",
"signatures": [
{
"keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA",
"sig": "MEQCICEr+Bd9RNe58w9VESUbsyEMcYrJONYZsCql1/BujxR1AiA0Ze5iNr3zJ4ceQwk33XdhfoEHgS6/5W+mXiLWGNdo7Q=="
}
]
}Observed since 20 Oct, 17:41 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:5e7535bc73cc6bef7584b2a2f70efdd67ce2eb968752a6c4f07b3252cda617b8