javascript - 如何在反应中创建动态元素?
问题描述
我正在尝试在单击按钮时动态创建元素,并使用 ref 将其附加到其中一个类中。
我可以使用document.createElement
,但从我读到的内容中不要在反应中使用它
例如,我想通过单击按钮<p>
向 div 添加一个元素,其类名为classes.elements
import React, { useRef } from 'react'
import classes from './AddElement.scss'
const AddElement = (props) => {
const elementRef = useRef(null)
const addElement = () => {
<p>This is paragraph</p>
}
return (
<div>
<button onClick={() => addElement()}>Click here</button>
<div ref={elementRef} className={classes.elements}>
</div>
</div>
)
}
export default AddElement;
解决方案
您可以尝试像这样使用 useState 钩子:
import React, { useState } from 'react';
import classes from './AddElement.scss';
const AddElement = () => {
const [dynamicElems, setDynamicElems] = useState([]);
const addElement = () => {
// Creates the dynamic paragraph
const newDynamicElem = <p className={classes.elements}>This is paragraph</p>;
// adds it to the state
setDynamicElems(() => [...dynamicElems, newDynamicElem]);
};
return (
<div>
<button onClick={() => addElement()}>Click here</button>
<div className={classes.elements}>{dynamicElems}</div>
</div>
);
};
export default AddElement;
推荐阅读
- javascript - jQuery: $.when().done() 不等待/从不触发
- android - Android Studio 不接受“this”作为 OnRefreshListener 中的 LoaderCallBack 参数
- html - 在 vw 中设置 CSS / font-size,用户尝试缩放网站
- php - 从 php 文件执行脚本
- assembly - 存储两位数的用户输入
- angular6 - 无法读取未定义的属性“loadChildren”中的错误
- c# - Linq 的 IEnumerable.Select 是否返回对原始 IEnumerable 的引用?
- sql - 左外连接并不总是匹配
- vue.js - 输入框自动更改为原始值
- jupyter-notebook - Python Markdown 代码未在输出中编译