Реагировать на проблему с переменными состояния - Number Vs String - PullRequest
0 голосов
/ 09 ноября 2019

Я столкнулся с этой странной проблемой, как объяснено ниже.

Я определил некоторые константы как:

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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...