前提・実現したいこと
配列に文字列が入っていて、その要素を一つずつ順番に表示したいです。
全て表示ではなく、イメージとしてはフラッシュ暗算のような感じになります。
Reactで時計を作るみたいにsetInterval等で簡単にできると思ったのですが、上手くできず困っております。
ちなみに、下のコードだと順番に表示はされるのですが三つ目くらいから挙動がおかしくなり、useEffectの部分が何度も高速で繰り返されるようになります(個人的にはライフサイクルメソッドに対する理解が浅いのだと思っています…)。
配列の要素を順番にログ出力することはできるのですが、表示となるとrederが関連してきてできなくなります。
該当のソースコード
javascript
1import React from 'react' 2import './App.css' 3 4const App = () => { 5 const words = [ 6 '私の', 7 '名前は', 8 '鈴木太郎', 9 'です。', 10 'よろしくお願いします。' 11 ] 12 const [count, setCount] = React.useState(0) 13 React.useEffect(() => { 14 setInterval(() => { 15 setCount(count + 1) 16 }, 1000) 17 }, [count, setCount]) 18 19 return ( 20 <div className="App"> 21 {words[count]} 22 </div> 23 ) 24} 25 26export default App 27
試したこと
その他には、setTimeoutを使ったり、メソッドを直接returnの中で呼び出したりしましたが、上記と同じような結果になってしまいました。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/27 08:41