【发布时间】:2018-03-13 14:14:20
【问题描述】:
这个问题很简单,但解决方案却很混乱。
我目前的实现是生成 50 到 100 之间的随机数并使用 this.setState({...}) 保存它,然后在我的渲染方法中调用它。
但问题是随机方法本身会多次生成随机数。这是因为每次调用 this.setState({...}) 时,render 方法都会渲染几次,并且在此渲染期间,随机数会发生变化,这不是我想要的。
export default class exampleComponent extends Component {
constructor() {
this.state = {
randomNumber: 0
};
}
generateRandomNumber = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
myview = () => {
const { randomNumber } = this.state;
setInterval(() => this.setState({randomNumber: generateRandomNumber(50, 100)}), 20000);
return (
<View>
<Text>{randomNumber}</Text>
</View>
);
};
render() {
return(
<View>
{this.myview()}
</View>
)
}
}
如何确保调用 setState() 后随机数不发生多次变化?
【问题讨论】:
-
一个原始的解决方案:你可以试试这个:
this.setState(() => {return {randomNumber: generateRandomNumber(50, 100)}; })
标签: javascript reactjs react-native random react-native-android