前提・実現したいこと
reactでsetStateしてもreloadするまで状態が更新されない問題に、一週間以上悩まされています。
時間経過でthis.state.nameの情報を更新したいのですが、設定した時間の経過後も表示されるthis.state.nameは変わらず、ブラウザを更新するとthis.state.nameが「変わった」になります。
なぜ状態が更新されないのでしょうか?
以下、codesandboxのコードです。
this.state.endを現在時刻から数秒後に設定してお試しください。
https://codesandbox.io/s/infallible-pond-y8uge?fontsize=14&hidenavigation=1&theme=dark
該当のソースコード
javascript
1import React from "react"; 2import dateToFormatString from './Datefmt'; 3 4 5export default class Human extends React.Component { 6 constructor(props) { 7 super(props); 8 this.state = { 9 name: "変わる前", 10 end: "2020-11-25T23:01:00", 11 }; 12 } 13 14 render() { 15 const date = dateToFormatString(new Date(), '%YYYY%-%MM%-%DD%T%HH%:%mm%:%ss%'); 16 17 if (this.state.name !== "変わった") { 18 if (this.state.end < date) { 19 this.setState({name: "変わった"}); 20 } 21 } 22 23 return ( 24 <> 25 <h1>{this.state.name}</h1> 26 {date} 27 </> 28 ) 29 } 30} 31 32 33
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/25 15:42