前端学习笔记(二十六)

231 阅读2分钟

这几天其实没学什么。

1. react-redux 的 action(type) 是共用的

因此:

  1. 不同文件的 action 是不能重名的,可以加上组件前缀来区分。
  2. 不同组件可以使用别的组件的 actionCreator。

2. useRef 存储变量

如果是直接在函数组件里定义一个变量,那么每次函数组件运行的时候,这个变量都会重新创建。 如果使用 useRef 就可以避免变量的变化,尤其是当这个变量要在 useEffect 里使用,因此必须被包括进依赖的时候。如果在函数组件里定义,那么每次变量都会变化,就会导致 useEffect 无限运行,或者添加多余的代码来判断。但是使用 useRef 就很简单了。
不过有时候,确实需要每次都重新生成新的变量,不是所有变量都要这么用。(比如说各种一次性的变量,异步请求中止的 source,fetch 的 request 等等)(当然,如果这些一次性变量确实也只用一次,那也可以用)(所以说还是看情况)

3. useDispatch

这个是从 react-redux 导入的方法,使用后就能够在函数组件里使用 dispatch 了。(因为当使用 mapDispatchToProps 后,props.dispatch 就会失效,使用该方法可以继续在函数组件里使用 dispatch)

4. react-syntax-highlighter 解析 ``` 时候的错误

react-syntax-highlighter 解析 markdown 的块级代码的时候,如果只看到一个 ```,没有解析到闭合的时候,就会返回 undefined,造成页面 bug。解决方案是当解析到 undefined 时候,返回 ""。
这个并不会让整个文章变成 "",而是只有块级代码变成 "",因为如图所示,react-syntax-highlighter 只对 ``` 区块包裹的地方起作用,value 指的是``` 包裹的区域返回的值,而不是整个 markdown 返回的值。

5. 关闭 grammarly

在 contentEditable 的元素里,grammarly 会起作用,写 markdown 大概是不需要这个的,加上 data-gramm={false} 关闭(注意这里是用-隔开,非驼峰写法)。

6. markdown 实时预览,和同步滚动

参考这篇文章