[React Recoil] Use selectors to calculate derived data based on state stored within a Recoil atom(代码
Posted answer1215
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[React Recoil] Use selectors to calculate derived data based on state stored within a Recoil atom(代码相关的知识,希望对你有一定的参考价值。
Recoil allows us to use atoms in order to store pieces of state. More often than not in our apps we need to use data that derives from our application state (for instance to multiply height and width stored within a state to calculate area of an element).
Luckily Recoil provides us with a powerful tool to automatically re-calculate derived state value whenever an piece of state changes - selectors.
A selector is a pure function that accepts atoms or other selectors as input. When these upstream atoms or selectors are updated, the selector function will be re-evaluated.
In this quick lesson we‘re going to learn how to use a selector in order to automatically calculate a square of a number whenever a value stored within an atom is going to change
import React from "react"; import { RecoilRoot, atom, selector, useRecoilState, useRecoilValue, } from "recoil"; import "./App.css"; const numState = atom({ key: "numState", default: 0, }); const squareState = selector({ key: "squareState", get: ({ get }) => { return get(numState) ** 2; }, }); function Counter() { const [number, setNumber] = useRecoilState( numState ); return ( <button onClick={() => setNumber(number + 1)} > Increment! </button> ); } function Square() { const squareNumber = useRecoilValue( squareState ); return <div>Square: {squareNumber}</div>; } function Display() { const number = useRecoilValue(numState); return <div>Number: {number}</div>; } function App() { return ( <RecoilRoot> <div className="App"> <h1>Recoil!</h1> <Counter /> <Display /> <Square /> </div> </RecoilRoot> ); } export default App;
以上是关于[React Recoil] Use selectors to calculate derived data based on state stored within a Recoil atom(代码的主要内容,如果未能解决你的问题,请参考以下文章
Facebook 新一代 React 状态管理库 Recoil