#javascript #reactjs
#javascript #reactjs
Вопрос:
Я работаю над react native последние 3 месяца, но у меня нет опыта, когда дело доходит до создания веб-сайта в just react. Я хотел бы знать, возможно ли повторно отобразить «index.js «файл, после вызова определенной функции в другом файле? Я хочу знать, может быть, я могу сделать это с помощью переменной useState, скажем, «firstTimeLoading», которая вызывает эту функцию только при ее значении true, а затем указанная функция изменяет состояние переменных на false, таким образом, эта функция вызывается только один раз. Возможно ли использовать этот метод? Это лучший выбор здесь? И как мне передать этот параметр в другой файл, чтобы я мог изменить его состояние?
Комментарии:
1. Я не понимаю вашего вопроса. Вы спрашиваете, может ли состояние быть общим для ваших различных страниц / компонентов? Да, через useContext. Вы спрашиваете, может ли какая-либо функция вызываться только один раз при загрузке страницы / компонента? Да, через useEffect.
Ответ №1:
О, это сложная задача, я не настолько силен в redux, но я думаю, что redux мог бы решить эту проблему. Однако некоторые приемы, которые я использовал, которые не очень хороши, — это выдавать функции, которые изменяют состояние в родительском файле. Таким же образом выполняется родительский повторный рендеринг и дочерние повторные рендеры.
function changeName() {
setState({name: "test"});
}
render(){
return(
<Child emitter={this.changeName} />
)
}
таким образом, дочерний элемент вызывает changeName с помощью реквизитов, а родительский элемент позже вызывает свою функцию, поскольку функция «changeName» находится в реквизитах дочернего элемента.
если вы хотите обновить весь сайт, не могли бы вы просто использовать этот ужасный вызов:
window.location.reload();
Комментарии:
1. Я думал о методе перезагрузки окна, но я не большой поклонник этого. Первый метод у меня не работает, потому что я импортирую функцию и вызываю ее как это functionName() , а не как компонент, как это сделал u.
2. если это функция, то я думаю, вам нужно использовать state вручную, хотя точно не помню, как это сделать. Затем отправьте его дочерним элементам через props и повторно отобразите созданное вручную состояние.