用状态变量反应问题-数字Vs字符串

时间:2019-11-09 06:44:27

标签: reactjs material-ui

我正面临着这个奇怪的问题,如下所述。

我将一些常量定义为:

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中,同一开关不起作用,并且始终属于默认情况。我正在使用下面的代码使用材质UI渲染本地选择:

<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的问题?

0 个答案:

没有答案