import { useStoreMap } from "effector-vue/composition";
Function, which subscribes to store and transforms its value with a given function. Signal will update only when the selector function result will change
MethodsuseStoreMap($store, fn)
Formulae
useStoreMap(
$store: Store<State>,
fn: (state: State) => Result,
): ComputedRef<Result>;
Arguments
$store
: Source Store<State>
fn
((state) => result): Selector function to receive part of source store(ComputedRef<Result>
)
useStoreMap(config)
Formulae
useStoreMap({
store: Store<State>,
keys?: () => Keys,
fn: (state: State, keys: Keys) => Result,
defaultValue?: Result,
}): ComputedRef<Result>;
Arguments
params
(Object): Configuration object
store
: Source storekeys
(() => Keys
): Will be passed to fn
selectorfn
((state: State, keys: Keys) => Result
): Selector function to receive part of source storedefaultValue
(Result
): Optional default value if fn
returned undefined
(ComputedRef<Result>
)
This hook is very useful for working with lists, especially with large ones
User.vueimport { createStore } from "effector";
import { useUnit, useStoreMap } from "effector-vue/composition";
const $users = createStore([
{
id: 1,
name: "Yung",
},
{
id: 2,
name: "Lean",
},
{
id: 3,
name: "Kyoto",
},
{
id: 4,
name: "Sesh",
},
]);
export default {
props: {
id: Number,
},
setup(props) {
const user = useStoreMap({
store: $users,
keys: () => props.id,
fn: (users, userId) => users.find(({ id }) => id === userId),
});
return { user };
},
};
<div>
<strong>[{user.id}]</strong> {user.name}
</div>
App.vue
const $ids = createStore(data.map(({ id }) => id));
export default {
setup() {
const ids = useStore($ids);
return { ids };
},
};
<div>
<User v-for="id in ids" :key="id" :id="id" />
</div>
More
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4