0
當您從下拉列表中選擇某個內容時,這個小組件會更改URL。一切工作正常..除了後退按鈕。如果按下它,其他所有內容都會更改,但下拉列表不會更改。下拉菜單,反應路由器和返回按鈕
究竟如何?
- 如果我去的着陸頁,默認值是所有
- 現在我選擇紅
- 現在藍
- 紅再次
- 最後藍
- 立即,如果我點擊後退按鈕,下拉菜單總是顯示最後一次選擇的值(藍在我的例子)
如何解決這個問題?
class MyComponent extends React.Component {
constructor (props) {
super(props)
this.state = {
selected: {
// This only affects dropdown if landing to page
value: this.props.params.color, // Get param from url
label: // Some irrelevant uppercase magic here
}
}
}
static defaultProps = {
colors: [
{value: 'all', label: 'All'},
{value: 'red', label: 'Red'},
{value: 'blue', label: 'Blue'}
]
}
render() {
return (
<Dropdown
options={this.props.colors} {/* All options */}
value={this.props.selected} {/* Selected option */}
onChange={this.handleSelect.bind(this)}
/>
)
}
handleSelect(color) {
this.setState({selected: color})
browserHistory.push(`/${color.value}`)
}
}
真棒!如果在之下有'
{this.getSelected()}
'會怎麼樣?如何使其工作,使getSelected()不會運行2次? – Solo將輸出添加到變量,並將其傳遞給'Dropdown':'const selected = this.getSelected()'。更新了答案以澄清。 –