Proper usage of react callback and effect hooks

This commit is contained in:
Gordon
2021-05-20 23:15:51 +01:00
parent 12ea0b5593
commit 37f1ab059b

View File

@ -1,7 +1,7 @@
import Board from './Board'; import Board from './Board';
import Burndown from './Burndown'; import Burndown from './Burndown';
import TaskEditor from './TaskEditor'; import TaskEditor from './TaskEditor';
import React, { useState } from "react"; import React, { useState, useEffect, useCallback } from "react";
import VSCodeApi from "./VSCodeApi"; import VSCodeApi from "./VSCodeApi";
declare var acquireVsCodeApi: Function; declare var acquireVsCodeApi: Function;
@ -29,7 +29,7 @@ function App() {
const [currentSprint, setCurrentSprint] = useState(null); const [currentSprint, setCurrentSprint] = useState(null);
const [burndownData, setBurndownData] = useState({ series: [] }); const [burndownData, setBurndownData] = useState({ series: [] });
window.addEventListener('message', event => { const processMessage = useCallback(event => {
const tasks = event.data.tasks const tasks = event.data.tasks
? Object.fromEntries(event.data.tasks.map(task => [task.id, task])) ? Object.fromEntries(event.data.tasks.map(task => [task.id, task]))
: {}; : {};
@ -78,6 +78,13 @@ function App() {
} }
setType(event.data.type); setType(event.data.type);
setDateFormat(event.data.dateFormat); setDateFormat(event.data.dateFormat);
}, []);
useEffect(() => {
window.addEventListener('message', processMessage);
return () => {
window.removeEventListener('message', processMessage);
};
}); });
return ( return (