Нужно предложение о доступе к состоянию Zustad через динамический крюк в ReactJavascript

Форум по Javascript
Ответить
Anonymous
 Нужно предложение о доступе к состоянию Zustad через динамический крюк в React

Сообщение Anonymous »

Я использую Zustand для хранения шаблонов, которые представляют собой многомерный массив, и я создал функцию, чтобы получить ценность из хранилища в одиночном хит. state.template))
и т. Д.

Код: Выделить всё

export function createSelectorHook<
TStore extends StoreApi,
TKeys extends keyof ExtractState,
>(
store: TStore,
keys: TKeys[],
equalityFn?: (
a: ExtractState[K],
b: ExtractState[K],
) => boolean = Object.is,
): Pick {
const selections = {} as Pick;
keys.forEach(key => {
selections[key] = useStoreWithEqualityFn(store, s => s[key], equalityFn);
});
return selections;
}
< /code>
Это отвечает за значение хранилища возврата в Object < /p>
Я использую это таким образом, например,

const {template, count} = createSelectorHook(storeRefrence, ['template', 'count'])

Я знаю, что нарушаю правила React Hook
почему я создаю ниже функцию, если я должен быть предназначен для рендеринга, чтобы направлять данные шаблона из индекса, поэтому я использую пунктирную строку для хранения, в которой они принадлежат
, который я использую, чтобы хранить в значении
, который придерживаюсь значения, которые будут закреплены в значении. строка. < /p>

Код: Выделить всё

export function useGetSelectorByPathHook(
store: TStore,
keys: TKeys,
equalityFn: (
a: ExtractState[K],
b: ExtractState[K],
) => boolean = Object.is,
): Record | any {
// return useStore(store, state => getValueAtPath(state, keys));
const render = useStoreWithEqualityFn(store, state => getValueAtPath(state, keys), equalityFn);
return render;
}

function getValueAtPath(obj: any, path: string) {
return path.split('.').reduce((acc, part) => {
if (acc === undefined || acc === null) return undefined;
return acc[part];
}, obj);
}
< /code>
Я использую эту функцию как < /p>
const layout = useGetSelectorByPathHook(storeRef, 'template.0.layout.1')

Я просто хочу подтвердить, что это способ, чтобы сделать это, я делаю, или я нарушаю любое правило Zustand [/b] или реагировать или это создает проблемы в будущем. /> Любое предложение или улучшения помогут мне сделать это лучше. < /p>

Подробнее здесь: https://stackoverflow.com/questions/796 ... k-in-react
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»