#javascript #reactjs #ecmascript-6
#javascript #reactjs #ecmascript-6
Вопрос:
Я работаю над проектом, где я обновляю URL. На самом деле это работает нормально, когда я нажимаю на кнопку далее, но я хочу повторно отобразить приложение при вызове функции. Я новичок в ReactJS, не мог бы кто-нибудь, пожалуйста, помочь мне, как решить эту проблему.
Извините, я не являюсь носителем языка, мне жаль, если я допустил ошибку в английской грамматике. Спасибо
Отображение данных с помощью этой функции URL
urlParams() {
return `http://localhost:3001/meetups?filter[limit]=${(this.state.Item)}amp;amp;
filter[skip]=${this.state.skip}
amp;amp;filter[order]=${this.state.sortedData}`;
}
Полный код компонента
class Example extends React.Component {
constructor(props) {
super(props);
this.state = {
Item: 5,
skip: 0
}
this.handleClick = this.handleClick.bind(this);
}
urlParams() {
return `http://localhost:3001/meetups?filter[limit]=${(this.state.Item)}amp;amp;filter[skip]=${this.state.skip}`
}
handleClick() {
this.setState({skip: this.state.skip 1})
}
render() {
return (
<div>
<a href={this.urlParams()}>Example link</a>
<pre>{this.urlParams()}</pre>
<button onClick={this.handleClick}>Change link</button>
</div>
)
}
}
ReactDOM.render(<Example/>, document.querySelector('div#my-example' ))
Комментарии:
1. Не могли бы вы, пожалуйста, показать свою
render()
функцию?2. когда вы используете функцию setState. Он должен повторно отобразить ваше представление.
3. Я использую его с помощью кнопки, но пока он не выполняет повторный рендеринг
4. @RobbieAverill, я обновил свой вопрос, пожалуйста, взгляните.
5. Ваш компонент должен выполнять повторный рендеринг только в том случае, если что-то действительно изменилось, и вы указываете своему компоненту что-то изменить с помощью
setState
. Я бы настоятельно рекомендовал отложить ваш проект на полчаса, отключить все приложения для обмена мгновенными сообщениями и т.д. И просто сесть, чтобы выполнить reactjs.org/tutorial/tutorial.html , кодирование продолжается. Они много думали о том, чтобы убедиться, что руководство охватывает все основы, и впоследствии вы поймете намного больше о том, как должен работать ваш собственный код.
Ответ №1:
Вы можете принудительно выполнить повторный рендеринг своего компонента, вызвав:
this.forceUpdate();
Однако вы должны быть осторожны, чтобы не войти в бесконечный цикл обновления.
Обычный (рекомендуемый) способ повторного отображения заключается в необходимости изменения вашего состояния с помощью setState
.
Редактировать
Я думаю, что вам нужно вызвать getData, как только вы нажмете на заголовок таблицы:
getSortedData=()=>{
console.log("hello clicked")
this.setState({
sortedData:'companyName'
})
// now invoke getdata which will refresh the data:
this.getData()
}
Комментарии:
1. Не работает! На самом деле я хочу отображать данные обновления при нажатии на кнопку, но это позволяет мне отображать новые данные при нажатии на кнопку далее
2. Я изменяю состояние URL с помощью этого метода. Не могли бы вы, пожалуйста, проверить ` getSortedData=()=>{ console.log(«привет, нажал») this.setState({ sortedData:’Название компании’ }) }`
3. изменяет ли это значение ‘CompanyName’? или это то же самое .. в этом случае react не будет повторно отображать..
4. Да, я обновляю
companyName
значение, но когда я нажимаю на кнопку, это не работает! когда я нажимаю на кнопку Далее, она работает нормально, но при первоначальном рендеринге она не дает мне результата обновления5. Не могли бы вы, пожалуйста, помочь?