I have the following class:
const NewPage = () => {
const [blocks, setBlocks] = useState(false);
const [needsShowImageModal, setNeedsShowImageModal] = useState(false);
const textButtonHandler = () => {
const key = randomInt(0, 1000000000);
setBlocks([
...blocks,
<TextBlock
key={key}
blockKey={key}
deleteButtonHandler={deleteButtonHandler}
/>
]);
console.log(blocks);
};
return (.....);
}
For some reason the first time textButtonHandler
is called it doesn't add the item to the array. I have checked the length of the array in the console and it is 0. What am I doing wrong here?
EDIT: After suggestions I now have:
const NewPage = () => {
const [blocks, setBlocks] = useState([]);
const [needsShowImageModal, setNeedsShowImageModal] = useState([]);
const textButtonHandler = () => {
const key = randomInt(0, 1000000000);
setBlocks([
...blocks,
{ key, deleteButtonHandler}
]);
};
const deleteButtonHandler = (blockKey) => {
console.log(blocks); // Empty
};
return (
<div>
<ImageModal
show={needsShowImageModal}
onHide={() => setNeedsShowImageModal(false)}
insertButtonHandler={insertImageHandler}
/>
<div className="d-flex">
<NewPageSidebar
textButtonHandler={textButtonHandler}
imageButtonHandler={imageButtonHandler}
spacingButtonHandler={spacingButtonHandler}
/>
<NewPageContent blocks={blocks} />
</div>
</div>
);
};
export default NewPage;
However if I add a block using textButtonHandler
and then fire deleteButtonHandler
the array is still empty.
h1 element
,< key="h2" h2>h2 element];` – Peter Jun 24 '20 at 09:18