reactからsocketへ.ioを使用すると、メッセージ配列状態は常に初期化されます.
タイトルと同じreactからsocketへ.ioを使用して、
真剣に検索してみました...これで解決です.
https://stackoverflow.com/questions/63094510/why-is-my-state-array-resetting-to-empty
https://medium.com/@baphemot/understanding-reactjs-setstate-a4640451865b
setStateは、パラメータとして関数を受け入れます.
関数をsetStateの最初の引数として渡すと、reactは呼び出し時に現在のステータスで関数を呼び出し、ステータスオブジェクトとしてマージするために戻ります.したがって、上記の例を次のように更新します.
//this.state={値:0}と仮定します.
this.setState(((状態)=>({値:状態値+1});
this.setState(((状態)=>({値:状態値+1});
this.setState(((状態)=>({値:状態値+1});
this.state.value=3最初は予想してあげます.この構文は、ステータスを以前のステータスに基づいて計算された値に更新する場合に常に使用されることを覚えておいてください.
const [messages, setMessages] useState([])
useEffect(() => {
socket.on('new message', data => {
setMessages([...messages, data])
}
},[])
このように処理すると、メッセージは常に初期化されます.真剣に検索してみました...これで解決です.
https://stackoverflow.com/questions/63094510/why-is-my-state-array-resetting-to-empty
https://medium.com/@baphemot/understanding-reactjs-setstate-a4640451865b
setStateは、パラメータとして関数を受け入れます.
関数をsetStateの最初の引数として渡すと、reactは呼び出し時に現在のステータスで関数を呼び出し、ステータスオブジェクトとしてマージするために戻ります.したがって、上記の例を次のように更新します.
//this.state={値:0}と仮定します.
this.setState(((状態)=>({値:状態値+1});
this.setState(((状態)=>({値:状態値+1});
this.setState(((状態)=>({値:状態値+1});
this.state.value=3最初は予想してあげます.この構文は、ステータスを以前のステータスに基づいて計算された値に更新する場合に常に使用されることを覚えておいてください.
setMessages((previousMessages) => [messageObject, ...previousMessages]);
関数をパラメータとしてsetMessagesに渡すと、トラブルシューティング...解決できる理由は...今はまだ分かりません.分かったら修正するReference
この問題について(reactからsocketへ.ioを使用すると、メッセージ配列状態は常に初期化されます.), 我々は、より多くの情報をここで見つけました https://velog.io/@warmwhiten/react-에서-socket.io를-사용하는데-메시지-배열-상태가-자꾸-초기화가-되었다テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol