React学習中です。以下秒数表示プログラムを作成しましたが、
不明点があります。
Javascript
1 setInterval(e => { 2 this.setState({now: (new Date()) }) 3 }, 1000)
↑の部分はなぜ
Javascript
1 setInterval( 2 this.setState({now: (new Date()) }) 3 , 1000)
↑ではダメなのでしょうか?------------>①
「e=>」を削ると初期表示後、表示更新がありませんでした。
この部分は何をしている記述でしょうか?----------->②
【プログラム全体】
JSX
1<!DOCTYPE html> 2<html> 3<head> 4 <meta charset="utf-8"> 5 <script src="http://unpkg.com/react@15/dist/react.min.js"></script> 6 <script src="http://unpkg.com/react-dom@15/dist/react-dom.min.js"></script> 7 <!--<script src="http://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.38/browser.min.js"></script>--> 8 <script src="http://unpkg.com/babel-standalone@6/babel.min.js"></script> 9 <!--<script src="https://unpkg.com/babel-core@5.8.38/browser.min.js"></script>--> 10</head> 11<body> 12 <div id="root"></div> 13 <script type="text/babel"> 14 class SClock extends React.Component{ 15 constructor (props){ 16 super(props) 17 this.state = { 18 now: (new Date()) 19 } 20 setInterval(e => { 21 this.setState({now: (new Date()) }) 22 }, 1000) 23 } 24 25 render(){ 26 const now = this.state.now 27 const hh = this.fmt(now.getHours()) 28 const mm = this.fmt(now.getMinutes()) 29 const ss = this.fmt(now.getSeconds()) 30 return (<div>{hh}:{mm}:{ss}</div>) 31 } 32 fmt(v){ 33 const s = "00" + v 34 return s.substr(s.length -2, 2) 35 } 36 } 37 ReactDOM.render(<div><SClock /></div>, document.getElementById('root')) 38 </script> 39</body> 40</html> 41 42
~~~~~~~~~~~~~~~~~~~
javascript
1 setInterval(function(){ 2 this.setState({now: (new Date()) }) 3 }, 1000)
無名関数に変えてもだめでした。アロー関数=無名関数という理解ですが、
これ動作しないのはなぜか。。参照したサイトではこの書き方をしている
ところがありました。
ちなみに、chromeのプロンプトには
Inline Babel script:9 Uncaught TypeError: this.setState is not a function
at <anonymous>:23:9
と出ます。--------------> ③

回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/30 08:56