我有一些麻煩顯示微調「」當我收到一些數據。我有一個state.isLoading,但我似乎無法在getdata.getPossible()函數啓動之前將其設置爲true。繼承人我有什麼:顯示微調數據加載時反應
class GetData extends Component {
constructor() {
super();
this.state = {
lastdraw: {},
alldraws: [],
bets: [],
isLoading: false,
showBets: false
};
}
componentDidMount() {
getdata.getLastResult().then((result) => {
this.setState({lastdraw: result.data.drawns[0]})
})
}
getMore() {
this.setState({isLoading: !this.state.isLoading})
this.setState({bets: getdata.getPossible(5), showBets: !this.state.showBets})
}
render() {
return (
<div>
<h1>{this.props.title}</h1>
<h3>{moment(this.state.lastdraw.date).format('LL')}</h3>
<div><span>{this.state.lastdraw.numbers}</span> + <span>{this.state.lastdraw.stars}</span></div>
<Btn onClick={this.getMore.bind(this)}>Generate</Btn>
{this.state.showBets ? this.state.bets.map((bet, i) => {return (<PossibleKey key={this.state.bets[i].key} bets={bet}/>)}) : null}
<Loader show={this.state.isLoading}/>
</div>
);
}
}
和Loader組件是這樣的:
function Loader(props) {
return props.show ? (
<div className='overlay'>
<div className='leftEye'></div>
<div className='rightEye'></div>
<div className='mouth'></div>
<p>The Universe is aligning. Please wait...</p>
</div>
) : null
}
我想要實現的是對Loader組件在其他地方使用的方法只是通過設置isLoading狀態真或錯誤。 getMore()函數在執行getPossible(n)後僅觸發Loader狀態。
我認爲這可能與Loader只有在設置了狀態(或者不是!!)之後才能接收道具有關。我怎樣才能觸發裝載機開啓/關閉?!
我把你的建議,並提出這一點,一個單擊處理程序:'handleClick(){ this.setState((prevState,道具)=>({ isloading:真 })) getdata.getPossible( 5)。然後(結果=> { this.setState((prevState,道具)=>({ 賭注:結果 })) }) 。然後((完成)=> { this.setState(( prevState,props)=>({isloading:false })) }) }'。它的工作原理並不是有史以來最優雅的代碼,而是承諾。否則,我將不得不提升裝載狀態到父組件,甚至進一步並作爲道具傳遞下去。 – talvasconcelos
你可以看到所有的代碼:https://github.com/talvasconcelos/millions – talvasconcelos