【发布时间】:2021-12-22 18:45:32
【问题描述】:
我正在尝试处理 2 个元素的 onFocus 和 onBlur 事件 - input 和 textarea 元素。我什至尝试将它实现为与对象的一种状态,但这是不可能的,所以我将它分为两种状态。每当我尝试关注 textarea 时,它都会展开,但是,如果我开始关注 input 元素,它会折叠而不是保持展开状态。我该如何实现?
const [titleFocused, setTitleFocus] = useState(null);
const [contentFocused, setContentFocus] = useState(null);
function handleFocus(event) {
const {name} = event.target;
setTitleFocus(name === 'title' && true);
setContentFocus(name === 'content' && true);
}
function handleUnfocus(event) {
const {name} = event.target;
setTitleFocus(name === 'title' && false);
setContentFocus(name === 'content' && false);
}
return (
<div >
<form
className="create-note">
{titleFocused || contentFocused && (
<input
name="title"
onChange={handleChange}
value={note.title}
placeholder="Title"
onFocus={handleFocus}
onBlur={handleUnfocus}
/>)
}
<textarea
name="content"
onChange={handleChange}
value={note.content}
placeholder="Take a note..."
onFocus={handleFocus}
onBlur={handleUnfocus}
rows={titleFocused || contentFocused ? "3" : "1"}
/>
<Zoom in={titleFocused || contentFocused} appear={true}>
<Fab onClick={submitNote}>
<AddIcon fontSize="large" />
</Fab>
</Zoom>
</form>
</div>
);
【问题讨论】:
标签: javascript html css reactjs jsx