Tarjima qoshish uchun havola boyicha o'tib Pull Request oching (havolaga o'tish).
Standart til uchun tarkibni ko'rsatadi.
import { useStoreMap } from "effector-vue/composition";useStoreMap introduced in effector-vue 22.2.0
Function, which subscribes to a store and transforms its value with a given selector. fn receives the state object of the store itself, not a copy or a proxy, and must not mutate it. The returned ComputedRef updates only when the result of the selector changes, so a component reading one item of a large store is not touched by the updates of the other items.
Methods
useStoreMap($store, fn)
Short version of useStoreMap introduced in effector-vue 23.3.0
Formulae
useStoreMap( $store: Store<State>, fn: (state: State) => Result, opts?: {scope?: Scope, forceScope?: boolean},): ComputedRef<Result>;Arguments
$store: SourceStore<State>fn((state) => result): Selector function to receive part of source storeopts(Object): Optional scope options
Returns
(ComputedRef<Result>)
Examples
<script setup lang="ts">import { useStoreMap } from "effector-vue/composition";
import { $user } from "./model";
const name = useStoreMap($user, (user) => user.name);</script>
<template> <p>{{ name }}</p></template>useStoreMap(config)
Formulae
useStoreMap({ store: Store<State>, keys?: MaybeRefOrGetter<Keys>, fn: (state: State, keys: Keys) => Result, updateFilter?: (update: Result, current: Result) => boolean, defaultValue?: Result, scope?: Scope, forceScope?: boolean,}): ComputedRef<Result>;Arguments
params(Object): Configuration objectstore: Source storekeys(MaybeRefOrGetter<Keys>): Passed tofnas its second argument. A getter or a ref is tracked, so the selector runs again when it changes. A plain value is used as it isfn((state: State, keys: Keys) => Result): Selector function to receive part of source storeupdateFilter((update: Result, current: Result) => boolean): Decides whether a new result offnreplaces the current one. Defaults toupdate !== currentdefaultValue(Result): Used every timefnreturnsundefinedscope(Scope) andforceScope(boolean): Scope options of the call
scope and forceScope options introduced in effector-vue 23.3.0
keys accepts a value or a ref since effector-vue 23.3.0. Before that it accepted a getter only
Returns
(ComputedRef<Result>)
Changed in effector-vue 23.3.0:
fnreceives the state object of the store. Before that it received a proxy, and the state of the store was mutated in place- a store that holds
nullis supported, and a key removed from the state is dropped instead of keeping its last value - the subscription is disposed with the effect scope and skipped during a server render
Examples
This hook is very useful for working with lists, especially with large ones
User.vue
<script setup lang="ts">import { useStoreMap } from "effector-vue/composition";
import { $users } from "./model";
const props = defineProps<{ id: number }>();
const name = useStoreMap({ store: $users, keys: () => props.id, fn: (users, userId) => users.find(({ id }) => id === userId)?.name, defaultValue: "unknown",});</script>
<template> <div> <strong>[{{ id }}]</strong> {{ name }} </div></template>App.vue
<script setup lang="ts">import { useUnit } from "effector-vue/composition";
import { $ids } from "./model";import User from "./User.vue";
const ids = useUnit($ids);</script>
<template> <div> <User v-for="id in ids" :key="id" :id="id" /> </div></template>model.ts
import { createStore } from "effector";
type User = { id: number; name: string };
export const $users = createStore<User[]>([ { id: 1, name: "Yung" }, { id: 2, name: "Lean" }, { id: 3, name: "Kyoto" }, { id: 4, name: "Sesh" },]);
export const $ids = createStore([1, 2, 3, 4]);
export const $count = createStore(0);Filtering updates
Since effector-vue 23.3.0 updateFilter receives the results of fn, as in effector-react. Before that it received the state of the store, so a filter written against the raw state has to be rewritten.
updateFilter receives the results of fn, not the state of the store. A rejected result is dropped, and the previous one stays until an accepted one arrives. A recompute caused by keys goes through the filter as well.
const evenCount = useStoreMap({ store: $count, fn: (count) => count, updateFilter: (update) => update % 2 === 0,});During a server render there is nothing to filter: the value follows the store until the render ends, and updateFilter is not called.
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.