前提
フロント:React
サーバー:Node.js
データベース:MongoDB
でTodoアプリを作成しています。
実現したいこと
一応作成できたのですがデータベースを変更しているだけでStateを変更できていないのでリロードをしないと表示が変わりません。
じゃあStateを変えろという話なのですが、コンポーネントの切り分けの過程でState管理が難しくなってしまいました。
Stateの管理が適当だったので親元で管理するように変更しました。またデータベースのやり取りの関数も親元に全て配置しました。
構成としては
App.js内で{FormView}と{ListView}コンポーネントを表示しています。
App.jsで[tasks, setTasks]としてStateを管理。またデータベースのやり取りをする関数をまとめて置いています。
showTasks(),createTask()等。
問題はこれらの関数内でsetTasksをするわけですが、buttonのonClick等で発火させたいため他のコンポーネントで使用する必要がありますがexportできないので使用できません。
発生している問題・エラーメッセージ
質問としては
・データベースと連携するためのメソッドはどのファイルに記述(管理)するのが適切か(関数はStateを取り扱う必要あり)
・データベースの更新とともにStateを更新するためにはどのようにしたらよいか
該当のソースコード
javascript
1function App() { 2 const [tasks, setTasks] = useState([]); 3 // データベースにアクセスして全てのタスクをセットする 4 const showTasks = async () => { 5 }; 6 7 const createTask = async () => { 8 }; 9 10 const deleteTask = async (_id) => { 11 }; 12 13 useEffect(() => { 14 console.log("副作用が実行されました。"); 15 showTasks(); 16 },[]); 17 18 return ( 19 <div className='todo_container'> 20 <FormView}></FormView> 21 <ListView></ListView> 22 </div> 23 ); 24} 25 26export default App;

回答1件
あなたの回答
tips
プレビュー