我正面临着这个奇怪的问题,如下所述。
我将一些常量定义为:
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的问题?