const [state, setState] = useState(initialState);
// 通常使用的定义方法
const [key, setKey] = useState(0);
// 但是怕大家不好理解,所以也可以拆开,如下:
const keyArr = useState(0);
const key = keyArr[0];
const setKey = keyArr[1];
const initData = [
{
imgSrc: '',
contentStr: '第一条评论',
},
{
imgSrc: '',
contentStr: '第二条评论',
},
{
imgSrc: '',
contentStr: '第三条评论',
},
];
import { useState, useEffect } from "react";
// useEffect 用于监听数据变化,不要也可以的
const BuyComment = () => {
// 带入初始值
const [dataList, setDataList] = useState(initData);
// 重点在这里
// 往数组里添加数据
const addRule = () => {
let obj = {
imgSrc: [],
contentStr: '新的评论',
};
// 有深拷贝的必要,防止数据出问题
const addItems = JSON.parse(JSON.stringify(dataList));
addItems.push(obj);
// 在这里完成值的修改
setDataList(addItems);
};
return (
<div>
{dataList.map((item, i) => {
return (
<div className={styles.mianBorder} key={i}>
{item.contentStr}
</div>
);
})}
<div className={styles.addDiv}>
<span className={styles.addCom} onClick={addRule}>
+ 添加评论
</span>
</div>
</div>
)
};
// 用于监听数据变化的
useEffect(() => {
console.log(dataList);
}, [dataList]);
export default BuyComment;
// 假设这里数据量非常大:jsonObj,我们需要对它进行解析,计算等等操作
const jsonObj = "{...}"; // 可能是一个很大的js 对象 或者json字符串
function DemoComponent() {
const [data, setData] = useState(() => {
console.log("执行了")
// 这种深拷贝是很耗性能的,所以我们在这里先把数据处理好,并且只处理一次
return JSON.parse(JSON.stringify(jsonObj ));
});
}
1. 希望本文能对大家有所帮助,如有错误,敬请指出
2. 原创不易,还请各位客官动动发财的小手支持一波(关注、评论、点赞、收藏)
3. 拜谢各位!后续将继续奉献优质好文
4. 如果存在疑问,可以私信我(主页有Q)