javascript - 多个反应 useState 调用给出未定义的属性
问题描述
我正在尝试使用title
属性实现笔记应用程序。以前,我的笔记应用程序在没有添加标题功能的情况下工作,但现在我已经集成了它,我有以下问题:textarea
元素的返回(笔记文本本身)是未定义的,而返回元素(input
注释标题)返回有效标题。
我敢肯定,下面的代码是错误源自的组件 - 组件是AddNote
.
到目前为止我已经尝试过:
我没有尝试过的:
import React, { useState } from 'react';
const AddNote = ({ handleAddNote }) => {
const [noteTitle, setNoteTitle] = useState('');
const [noteText, setNoteText] = useState('');
const handleSaveClick = () => {
if ((noteText.trim().length > 0) && (noteTitle.trim().length > 0)) {
handleAddNote(noteText);
setNoteText('');
handleAddNote(noteTitle);
setNoteTitle('');
}
};
return (
<div className='note new'>
<div className="toolbar">
<button
className='add-delete-icon'
onClick={handleSaveClick}
>+</button>
<input
type="text"
className="note-title"
placeholder="Add a title..."
value={noteTitle}
onChange={
event => setNoteTitle(event.target.value)
}
autoFocus
/>
</div>
<textarea
className="note-text"
placeholder="Add an idea..."
value={noteText}
onChange={
event => setNoteText(event.target.value)
}
></textarea>
</div>
);
};
export default AddNote;
我在这里做错了什么,特别是在使用多个实例时useState
,即这种“批处理”“setState”调用的想法?或者更确切地说,问题是否属于handleSaveClick
匿名函数?
依赖组件 - 意思是指添加标题功能的组件 - 是Note
组件 ( Pastebin )、NoteList
组件 ( Pastebin ) 和值得注意的Home
组件 ( Pastebin )。
解决方案
查看代码,您应该handleAddNote
这样调用
if ((noteText.trim().length > 0) && (noteTitle.trim().length > 0)) {
handleAddNote(noteTitle, noteText);
setNoteText('');
setNoteTitle('');
}
handleAddNote
是 addNote 中的函数Home.jsx
。addNote
取title
和text
作为论据
const addNote = (title, text) => {....}
推荐阅读
- flutter - 如何删除然后重新安装 Flutter
- html - 如何在子菜单中选择第一个孩子而不是孙子,而在jquery中有一个相同的班级
- raku - 标量泥浆?
- php - 如何遍历 Selectize 选项并确定 PHP 中的现有 ID 和新条目
- c++ - 访问未声明的结构?
- ruby-on-rails - React 中的重复选择(冰块宝石)
- swift - 在 UISplitViewController 中使用 SwiftUI 列表侧边栏
- flutter - Flutter (Dart) 在缺少必需的函数参数期间只给我一个警告而不是一个错误
- python - 如何从级别顺序遍历创建二叉树?
- html - Formik 中使用的“名称”和“类型”属性是什么?