Я столкнулся с этой странной проблемой, как объяснено ниже.
Я определил некоторые константы как:
const HIGH_YIELD = 0, LEAST_RISKY = 1, FAIR_PRICED = 2;
, затем инициализирую в конструкторе:
this.state = { data: [], errors: {}, subscription: {}, sort: HIGH_YIELD};
Теперь в том же конструкторе, если я использую его так:
switch(this.state.sort){
case HIGH_YIELD: {this.state.subscription.sort = 'highyield'; break;}
case LEAST_RISKY: {this.state.subscription.sort = 'leastrisky'; break;}
case FAIR_PRICED: {this.state.subscription.sort = 'fairpriced'; break;}
default: {console.log('sortdddd'); break;}
}
, он работает нормально, но в моем componentDidUpdate тот же ключ не работает, и он всегда падает до значения по умолчанию. Я использую приведенный ниже код для рендеринга нативного выбора с использованием пользовательского интерфейса материала:
<NativeSelect value={sort} onChange={this.handleSort} >
<option value={HIGH_YIELD}>High Yielding</option>
<option value={LEAST_RISKY}>Less Risky</option>
<option value={FAIR_PRICED}>Fairly Priced</option>
</NativeSelect>
, и мой handleSort просто делает
this.setState({sort: event.target.value})
Теперь, если я изменю константы следующим образом
const HIGH_YIELD = '0', LEAST_RISKY = '1', FAIR_PRICED = '2';
тогда все работает нормально - включая код конструктора и метод componentDidUpdate.
Любая подсказка, почему это должно происходить? Это проблема с React или material-ui?