类型“Window & typeof globalThis”上不存在属性“REDUX_DATA”。
Redux Toolkit 做SSR, preloadState 上访问不到window
const preloadedState = window.REDUX_DATA;
^
ReferenceError: window is not defined
打包之后,运行服务端代码的时候就有这个,而且我已经关闭了SSR的controller,应该是不会去访问打包后的文件然后做操作的
// TODO
webapck-dev-sever
当我把配置文件集中到config目录下的时候(使用不同的配置文件),使用webpack打包或者webpack serve的时候要指定配置文件位置
ts 项目中使用 css modules
Globals.d.ts
自定义组件获得React的合成事件
我们封装一个组件,比如我们封装了一个Button,如果想在这个组件上onClick,那么就得在封装的组件里面传入React.ButtonHTMLAttributes
const Button: React.FC<React.ButtonHTMLAttributes<HTMLElement>> = ({
children, ...rest
}) => {
return <button {...rest}>{children}</button>;
};
CSS modules在React中通过条件判断
className={styles['one'] + ' ' + styles[条件 ? 'two' : 'three']}
// 普通
className={'one' + ' ' + (条件 ? 'two' : 'three')}
CSS Modules设置全局:global
之后,使用这个样式得用普通css的方式,不能用styles.
或者styles[]
vite中使用antd的配置
获取当前ip地址
首先发现了几个接口,但是通过XMLHttpRequest会报跨域问题
于是以为是localhost的原因,然后以为是内网和外网的问题,去网上找到了获取ip地址的内网和外网的方式。发现可以通过WebRTC的方式获取IP,但是感觉过于麻烦,因为我的目的不是获取ip,最终目的是获取城市编码,也就是通过ip去找城市编码,但是我发现搜狐的那个接口刚好是有返回城市编码的,所以还是用它那个比较简便
但是我发现好像不是这个问题,因为通过公网的那种script方法是可以获取到的,然后我就想用创建script标签的方式去获取
但是又遇到了问题,动态创建script的方式去获取,貌似会有异步的问题,那边数据还没返回回来,另一个script的代码就执行了。最终解决,在index.html里面加入script标签
数据库设计
文章和标签之间
一篇文章可以对应多个标签,一个标签也可以对应多个文章,所以需要根据标签分类
首先我想到的是数据库的那种联表查询,也就是join,然后我这个用sql语句查询的话,left join是可以搞定的,但是在sequelize中,因为涉及到表与表之间的关联操作。官网大概有一对一、一对多、多对多。我选择了多对多的方案,但是使用 belongsToMany 之后,首先使用传入字符串的那种方法,但是中间表是建立了,但是好像,没有联动起来,折腾了几番之后选择了第二种方法,自己创一个中间表,但是折腾之后也没实现。最后我想到就是直接查两个表,在标签表中每一项记录文章id和标签名,这样使它们对应起来,在每一次创建文章的时候都会根据传入的标签创建。在需要根据标签分类的时候,根据标签名从标签表里查出所有该标签名对应的文章id,然后从文章表中查出对应的一系列文章。