Интересно, стоит ли помещать функцию в переменную window
.
Например:
Приложение. js
...
<PageContextProvider>
<AuthContextProvider>
<Content />
</AuthContextProvider>
</PageContextProvider>
...
В App.js
я помещаю провайдеров контекста в Content
PageContextProvider. js
/**
* Display Snackbar Messages On Page
* @param {string} message Message title to be displayed
* @param {string} status Message Status
* @param {objext} options Other Options
* @returns {void}
*/
const addMessage = (message, status = 'success', options = {}) => {
const m = {
message,
status,
...options
};
setMessages({ ...messages, [new Date().getTime()]: m });
};
/**
* Display Snackbar Messages On Page
* @param {string} message Message title to be displayed
* @param {string} status Message Status
* @param {objext} options Other Options
* @returns {void}
*/
const removeMessage = messagekey => {
const m = messages;
delete m[messagekey];
setMessages({ ...m });
};
useEffect(() => {
window.addMessage = addMessage;
window.removeMessage = removeMessage;
}, []);
Как вы можете видеть, я добавил addMessage
и removeMessage
в window
объект. Вот как я собираюсь его использовать:
AuthContextProvider. js
...
const login = async (email, password) => {
setAuth(true);
window.addMessage('You Are successfully Logged In', 'success');
};
...
Или в любом месте моего приложения:
ExampleComponent. js
...
window.addMessage('This is example warning message from ExampleComponent', 'warning');
...
Конечно, я могу передать addMessage
и removeMessage
в качестве значения Content Provider, но я предпочитаю делать это так, потому что мне нужно писать меньше кода, я знаю, что использование переменной window
не хорошо, и это медленно, но это всего лишь легкие сообщения, вероятно, используемые раз в минуту или два
Я хочу знать, является ли это хорошей практикой, и должен ли я делать это на производстве. Спасибо