从0开发React项目-16-持久化

144 阅读1分钟

持久化

const useTags = () => {
    const [tags, setTags] = useState<TagEntity[]>([]);
    useEffect(() => {
        setTags(JSON.parse(window.localStorage.getItem("tags")||'[]'));
    },[]); // 依赖数据为空数组时,表示初始化,初始化从local读取
    useEffect(() => {
        window.localStorage.setItem("tags", JSON.stringify(tags));
    },[tags]); // tags引用更新时触发,这也就要求,更新tags,不能只更新值,而是要更新tags的地址
    ……
}

其他

  • 安装classnames支持库
yarn add classnames
yarn add --dev @types/classnames

使用,classnames可以合并class

import classnames from 'classnames';
……
const Icon = (props: Props) => {
    const { name, className, ...rest } = props;
    return (<svg className={classnames("icon", className)} {...rest}>
        <use xlinkHref={'#' + props.name}/>
    </svg>);
}
……
  • 日期时间库 dayjs
    yarn add dayjs
    import dayjs from 'dayjs'