设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 重新 试卷 文件
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

React项目从Javascript到Typescript的迁移经验总结(5)

发布时间:2019-05-08 04:35 所属栏目:21 来源:wuming
导读:实际项目里,组件的state可能会有很多值,如果按照我们上面这种方式去写会比较麻烦,所以可以考虑一下下面这个简便写法: importReact,{MouseEvent}fromreact; interfaceTeachersProps{ user:User } constinitialSt

实际项目里,组件的state可能会有很多值,如果按照我们上面这种方式去写会比较麻烦,所以可以考虑一下下面这个简便写法:

  1. import React,{MouseEvent} from "react";  
  2. interface TeachersProps{  
  3.   user:User  
  4. }  
  5. const initialState = {  
  6.   pageNo:1,  
  7.   pageSize:20,  
  8.   total:0,  
  9.   teacherList:[]  
  10. }  
  11. type TeachersState = Readonly<typeof initialState>  
  12. export default class Teachers extends React.PureComponent<TeachersProps,TeachersState> {  
  13.     readonly state = initialState  
  14.     handleClick=(e:MouseEvent<HTMLDivElement>)=>{  
  15.         console.log(e.target);  
  16.     }  
  17.     //...省略部分代码  
  18.     render(){  
  19.         return <div onClick={this.handleClick}>点击我</div>  
  20.     }  
  21. }  

这种写法会简便很多代码,但是类型限制效果上明显不如第一种,所以这种方法仅仅作为参考,可根据实际情况去选择。

Ant Design丢失样式文件

当我们把项目启动起来之后,某些同学的页面可能会出现样式丢失的情况,如下:

打开控制台,我们发现Ant Design的类名都找不到对应的样式:

出现这种情况是因为我们把babel删除之后,用来按需加载组件样式文件的babel插件babel-plugin-import也随着丢失了。不过typescript社区有一个babel-plugin-import的Typescript版本,叫做“ts-import-plugin”,我们先来安装一下:

  1. yarn add ts-import-plugin -D 

这个插件需要结合ts-loader使用,所以webpack配置中需要做如下调整:

  1. const tsImportPluginFactory = require('ts-import-plugin')  
  2. module.exports = {  
  3.     //省略部分代码...  
  4.     module:{  
  5.         rules:[{  
  6.             test: /\.tsx?$/,  
  7.             loader: "ts-loader",  
  8.             options: {  
  9.                 transpileOnly: true,//(可选)  
  10.                 getCustomTransformers: () => ({  
  11.                   before: [  
  12.                     tsImportPluginFactory({  
  13.                         libraryDirectory: 'es',  
  14.                         libraryName: 'antd',  
  15.                         style: true  
  16.                     })  
  17.                   ]  
  18.                 })  
  19.             }  
  20.         }]  
  21.     }  
  22.     //省略部分代码...  
  23. }  

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读