setOffset(0);
// 这里是props传进来的事件,在外部是列数据中的onHeaderCell方法提供的事件,请自行研究官方提供的案例
onResize(…argu);
}}
draggableOpts={{ enableUserSelectHack: false }}
);
};
function ArticleList(props) {
const [isLoading, setIsLoading] = useState(false);
const [articleList, setArticleList] = useState([{}]);
const [Columns, setColumns] = useState([{}]);
const modelStatusRef = useRef(null);
const getList = () => {
setIsLoading(true);
axios({
method: “get”,
url: servicePath.getArticleList,
withCredentials: true,
}).then(async (res) => {
//console.log(res);
setIsLoading(false);
let list = await res.data.list.map((a) => {
let b = a.addtime;
b = moment(+b).format(“YYYY-MM-DD”); //把时间戳format成需要的格式
a._addtime = b; //保留原始时间戳为addtime,转换后的为_addtime
return a;
});
setArticleList(list);
//console.log(res.data.list)
});
};
const delArticle = (id) => {
confirm({
title: 确定删除(id:${id})?
,
content: “ok–删除”,
onOk() {
console.log(servicePath.deleteArticle + ${id}
);
axios({
method: “get”,
url: servicePath.deleteArticle + id,
withCredentials: true,
}).then((res) => {
//console.log(res)
message.success(“删除成功”);
getList();
});
},
onCancel() {
message.info(“取消删除”);
},
});
};
const changeArticle = (id) => {
props.history.push(/adminIndex/changeArticle/${id}
);
};
const getListBytitle = (title) => {
setIsLoading(true);
axios({
method: “get”,
url: servicePath.getArticleListBytitle + title,
withCredentials: true,
}).then(async (res) => {
//console.log(res);
setIsLoading(false);
let list = await res.data.list.map((a) => {
let b = a.addtime;
b = moment(+b).format(“YYYY-MM-DD”); //把时间戳format成需要的格式
a._addtime = b; //保留原始时间戳为addtime,转换后的为_addtime
return a;
});
setArticleList(list);
//console.log(res.data.list)
});
};
useEffect(() => {
getList();
let columns = [
{
title: “标题”,
dataIndex: “title”,
width: 300,
},
{
title: “类型”,
dataIndex: “typename”,
width: 100,
},
{
title: “发布时间”,
dataIndex: “_addtime”,
width: 150,
sorter: (a, b) => a.addtime - b.addtime,
},
{
title: “浏览量”,
dataIndex: “viewcount”,
width: 100,
sorter: (a, b) => a.viewcount - b.viewcount,
},
{
title: “操作”,
key: “action”,
render: (item) => (
<Button
type=‘link’
onClick={() => {
console.log(item);
changeArticle(item.id);
}}
修改
<Button
type=‘link’
onClick={() => {
delArticle(item.id);
}}
删除
),
},
];
columns = columns.map((col, index) => ({
…col,
onHeaderCell: (column) => ({
width: column.width,
onResize: handleResize(index),
}),
}));
setColumns(columns);
}, []);
useEffect(() => {
// 每次 更新 把值 复制给 modelStatusRef
modelStatusRef.current = Columns;
}, [Columns]); // 依赖的值 等modelStatus 改变了 才出发里面的值
const handleResize = (index) => (e, { size }) => {
//console.log(modelStatusRef.current)
console.log(size);
const nextColumns = […modelStatusRef.current];
nextColumns[index] = {
…nextColumns[index],
width: size.width,
};
setColumns(nextColumns);
console.log(Columns, nextColumns);
};
const components = {
header: {
cell: ResizeableTitle,
},
};
return (
<Search
placeholder=‘search article’
onSearch={(value) => {
getListBytitle(value);
}}
style={{ width: 200 }}
/>
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
前端资料汇总
我一直觉得技术面试不是考试,考前背背题,发给你一张考卷,答完交卷等通知。
首先,技术面试是一个 认识自己 的过程,知道自己和外面世界的差距。
更重要的是,技术面试是一个双向了解的过程,要让对方发现你的闪光点,同时也要 试图去找到对方的闪光点,因为他以后可能就是你的同事或者领导,所以,面试官问你有什么问题的时候,不要说没有了,要去试图了解他的工作内容、了解这个团队的氛围。
找工作无非就是看三点:和什么人、做什么事、给多少钱,要给这三者在自己的心里划分一个比例。
最后,祝愿大家在这并不友好的环境下都能找到自己心仪的归宿。
资料汇总**
我一直觉得技术面试不是考试,考前背背题,发给你一张考卷,答完交卷等通知。
首先,技术面试是一个 认识自己 的过程,知道自己和外面世界的差距。
更重要的是,技术面试是一个双向了解的过程,要让对方发现你的闪光点,同时也要 试图去找到对方的闪光点,因为他以后可能就是你的同事或者领导,所以,面试官问你有什么问题的时候,不要说没有了,要去试图了解他的工作内容、了解这个团队的氛围。
找工作无非就是看三点:和什么人、做什么事、给多少钱,要给这三者在自己的心里划分一个比例。
最后,祝愿大家在这并不友好的环境下都能找到自己心仪的归宿。