Новая библиотека управления государством для React
Если вы хотите узнать больше о его потребностях и мыслительном процессе, стоящем за ней. Пожалуйста, перейти к: Отдача домашняя страница и посмотрите видео внизу страницы.
Введение:
Во -первых: Основное использование отдачи – это введение Атом Анкет
import { atom } from 'recoil'
export const DataEntriesAtom = atom({
key: 'dataEntries', // * unique Key (with respect to other atoms/selectors)
default: [] // * default value (aka initial value)
})
Код является самоуверенем с комментариями.
Вот как вы используете его в компоненте.
import React from 'react'
import { useRecoilState } from 'recoil'
import moment from 'moment'
// * Atoms
import { DataEntriesAtom } from '../../Recoil/Data/Atoms'
// * Style
import './index.css'
export default props => {
const [logbookEntries, setLogbookEntries] = useRecoilState(DataEntriesAtom)
return (
Logbook
{logbookEntries.map(entry => (
{moment(entry.createdAt).format('MMMM Do YYYY')}
{entry.value}
))}
)
}
Но каково использование атома, который вы спрашиваете? Если вы используете DataEntriesatom в любом другом компоненте, и вы называете SetLogBookEntries Из этого компонента отдача контролирует изменение в этом конкретном атоме и только повторно использует компонент, который использует это Атом Анкет Простой, но эффективно.
Это уменьшает код шаблона, который вы должны написать, и, скажем, у вас есть дерево DOM с двумя основными ветвями, которые не имеют связи друг с другом, но вы хотите, чтобы узел отдельной ветви изменил свое значение, как только вы измените значение текущей ветви.
Используя Redux, вам придется написать много кода, чтобы заставить это работать. Но в этом случае просто определение атома с заработной платой.:)
Кроме того, обратите внимание, что мы используем UsercoilState, импортированный из отдачи.
Во -вторых: Отдача введена Селектор Анкет
import { selector } from 'recoil'
// * Atom
import { DataEntriesAtom } from './Atoms';
// * API calls
import {
GetDataEntriesAPI
} from '../../Api/Data'
export const GetDataEntriesQuery = selector({
key: 'dataEntriesQuery',
get: async ({ get }) => {
let previousEntries = get(DataEntriesAtom);
let entries = await GetDataEntriesAPI()
return previousEntries.concat(entries)
}
})
Селекторы представляют производное состояние. Вы можете думать о полученном состоянии как о результатах прохождения состояния к чистой функции, которая каким -то образом изменяет заданное состояние.
Давайте настроим отдачу:
В вашем файле JS Parent (в моем случае это index.js)
Для асинхронных вызовов: вы можете использовать Shapense, вызывая селектор, отдача будет управлять загрузкой компонента для вас.
import React from 'react'
import ReactDOM from 'react-dom'
import { RecoilRoot } from 'recoil'
// * Routes
import Routes from './Routes'
// * Styling
import './index.css'
ReactDOM.render(
Loading... Оригинал: “https://dev.to/iamawaisakram/using-recoil-with-react-4api”