2017-01-18 3 views
0

Я думаю, что это простой вопрос, но здесь идет: Есть ли способ проинструктировать ваш компонент для повторного рендеринга при изменении реквизита? У меня есть компонент, подключенный к хранилищу redux, который при определенном действии обновляет состояние, которое затем фильтрует вниз в реквизиты, после чего я хочу, чтобы приложение отвечало на изменения.Re-render компонент на обновление реквизита

Я думаю, вы использовали бы componentDidUpdate()?

Что-то вроде:

// ... 
componentDidUpdate(prevProps, prevState) { 
    if (prevProps !== this.props) { 
     // re-render x <-- not sure how to do this 
    } 
} 

Plus, что бы метод повторной визуализации компонента всего, и что бы метод повторного рендеринга только обновленный реквизита?

Любая помощь приветствуется.

+2

Можете ли вы уточнить свои вопросы с дополнительной информацией о реквизитах? Ваш компонент должен быть рендерирован снова «автоматически» при смене реквизита (без необходимости вызова этого вручную). Взгляните на https://github.com/reactjs/redux/issues/585#issuecomment-133028621, чтобы узнать, помогает ли это –

ответ

0

В методе вы можете позвонить this.forceUpdate(). Другой способ - this.setState(this.state).

3

Вы можете использовать

componentWillReceiveProps (props){ 
this.doSomething(props) // To some function. 
this.setState({data: props}) // This will update your component. 
} 

Если реквизит является то, что нужно, чтобы изменить состояние, вы получите петлю бесконечности.

Отъезд Реальный жизненный цикл here, кстати, может помочь.

+1

'componentWillReciveProps' ->' componentWillReceiveProps'. Невозможно внести изменения, так как для редактирования требуется минимум символов для изменения! – jhrr

+1

@jhrr Обновлено спасибо :) – Modig