Tarjima qoshish uchun havola boyicha o'tib Pull Request oching (havolaga o'tish).
Standart til uchun tarkibni ko'rsatadi.
import { fork, type Scope } from "effector";
Methods
fork()
introduced in effector 22.0.0
Creates an isolated instance of application. Primary purposes of this method are SSR and testing.
Formulae
fork(): Scope
Returns
Scope: New fresh scope
Examples
Create two instances with independent counter state
import { createStore, createEvent, fork, allSettled } from "effector";
const inc = createEvent();
const dec = createEvent();
const $counter = createStore(0);
$counter.on(inc, (value) => value + 1);
$counter.on(dec, (value) => value - 1);
const scopeA = fork();
const scopeB = fork();
await allSettled(inc, { scope: scopeA });
await allSettled(dec, { scope: scopeB });
console.log($counter.getState()); // => 0
console.log(scopeA.getState($counter)); // => 1
console.log(scopeB.getState($counter)); // => -1
fork(options)
Allows to set values for stores in scope and replace handlers for effects.
support for array of tuples in values
and handlers
introduced in effector 22.0.0
Formulae
fork(options: { values?, handlers? }): Scope
Arguments
options: { values?, handlers? }
โ Object with optional values and handlers
values
Option to provide initial states for stores.
Can be used in three ways:
- Array of tuples with stores and values:
fork({
values: [
[$user, "alice"],
[$age, 21],
],
});
- Map with stores and values:
fork({
values: new Map().set($user, "alice").set($age, 21),
});
- Plain object:
{[sid: string]: value}
fork({
values: {
[$user.sid]: "alice",
[$age.sid]: 21,
},
});
Such objects are created by serialize, in application code array of tuples is preferred
handlers
Option to provide handlers for effects.
Can be used in different ways:
- Array of tuples with effects and handlers:
fork({
handlers: [
[getMessageFx, (params) => ({ id: 0, text: "message" })],
[getUserFx, async (params) => ({ name: "alice", age: 21 })],
],
});
- Map with effects and handlers:
fork({
handlers: new Map()
.set(getMessageFx, (params) => ({ id: 0, text: "message" }))
.set(getUserFx, async (params) => ({ name: "alice", age: 21 })),
});
- Plain object:
{[sid: string]: handler}
fork({
handlers: {
[getMessageFx.sid]: (params) => ({ id: 0, text: "message" }),
[getUserFx.sid]: async (params) => ({ name: "alice", age: 21 }),
},
});
Such objects are deprecated since effector 23.0.0 and will be removed in future versions. Array of tuples is preferred.
Returns
Scope: New fresh scope
Examples
Set initial state for store and change handler for effect
This is an example of test, which ensures that after a request to the server, the value of $friends
is filled.
import { createEffect, createStore, fork, allSettled } from "effector";
const fetchFriendsFx = createEffect<{ limit: number }, string[]>(async ({ limit }) => {
/* some client-side data fetching */
return [];
});
const $user = createStore("guest");
const $friends = createStore([]);
$friends.on(fetchFriendsFx.doneData, (_, result) => result);
const testScope = fork({
values: [[$user, "alice"]],
handlers: [[fetchFriendsFx, () => ["bob", "carol"]]],
});
/* trigger computations in scope and await all called effects */
await allSettled(fetchFriendsFx, {
scope: testScope,
params: { limit: 10 },
});
/* check value of store in scope */
console.log(testScope.getState($friends));
// => ['bob', 'carol']
fork(domain, options?)
Introduced in effector 21.0.0
Since effector 23.0.0.
fork
no longer requires domain
as an argument, because it can automatically track all units starting from effector 22.0.0.
Formulae
fork(domain: Domain, options?: { values?, handlers? }): Scope
Arguments
domain
(Domain): Optional domain to fork.options: { values?, handlers? }
โ Object with optional values and handlers
Returns
Scope: New fresh scope
Examples
TBD
Ingliz tilidagi hujjatlar eng dolzarb hisoblanadi, chunki u effector guruhi tomonidan yozilgan va yangilanadi. Hujjatlarni boshqa tillarga tarjima qilish jamiyat tomonidan kuch va istaklar mavjud bo'lganda amalga oshiriladi.
Esda tutingki, tarjima qilingan maqolalar yangilanmasligi mumkin, shuning uchun eng aniq va dolzarb ma'lumot uchun hujjatlarning asl inglizcha versiyasidan foydalanishni tavsiya etamiz.