React: как повторно отобразить, если вызвана функция

#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. Не могли бы вы, пожалуйста, помочь?