2016-04-17 6 views
2

Вот мои компонентов для приложения:Как сбросить компонент состояния детей в реакции

<SystemList /> 
<SystemDetail /> 
    <WorldList /> 
    <WorldDetail /> 

Структура данных является то, что существует несколько систем, каждая система имеет несколько миров. В каждом мире есть подробная информация.

В случае реакции, при нажатии каждой системы, у нее есть действие, чтобы получить активную систему, а затем SystemDetail предоставит информацию. Внутри SystemDetail он имеет два дочерних компонента WorldList и WorldDetail. Когда вы нажмете список мира, появится действие, чтобы отобразить подробную информацию о мире.

Так что мое приложение прекрасно работает после списка системных списков, оно получает детали системы, а затем, щелкнув список мира, попадает в детали мира. Тем не менее, у меня возникла проблема, чтобы сбросить детали мира, а это значит, что когда я снова нажимаю системный список, мировая деталь все еще показывает предыдущий мир.

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

Как сбросить состояние компонента WorldDetail после нажатия кнопки System in SystemList? Имеет ли это смысл? Или, может быть, макет будет иметь больше смысла. enter image description here

Я совершенно новый, чтобы реагировать и сокращать, поэтому любая помощь будет замечательной!

+0

Итак, я закончил с использованием localStorage.setItem ('clickedPlanet', true); чтобы установить флаг «clickedPlanet», чтобы узнать, щелкнул ли пользователь список «Система», затем проверьте это значение, чтобы распечатать информацию о мире. – Lisa

+0

Разве ваш «компонент детали мира» просто не должен отвечать за собственное состояние ... – Maxwelll

ответ

5

Вы можете использовать componentWillReceiveProps внутри WorldDetail, чтобы изменить это состояние. Когда он получает новые реквизиты от SystemDetail.

+0

Спасибо, что ответили. Я попытался, но это не сработало. SystemDetail получает новый реквизит, но для его изменения требуется действие. Имеет ли это смысл? – Lisa

+1

@ Lisa React должен перекомпоновать компонент, если вы вызываете 'setState' в' componentWillReceiveProps'. Вы называете 'setState'? Кроме того, вы могли бы поделиться с нами своим кодом, это облегчит вам помощь. –

+0

Да, я вызвал setState, но он все еще не работал. Я закончил с установкой флага в localStorage, чтобы определить, использует ли использование системного списка. Спасибо всем! – Lisa

Смежные вопросы