Как повторно отобразить index.js с помощью функции в другом файле. РЕАГИРОВАТЬ

#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 и повторно отобразите созданное вручную состояние.