写点什么

React TypeScript 项目基本构建 2

用户头像
JackWangGeek
关注
发布于: 2020 年 08 月 13 日
React TypeScript 项目基本构建2

React组件中处理可以用CSS单独的文件来定义样式外,还可以直接用类似style这种方式来定义样式,当然这里需要首先安装一下依赖库,此时需要打开命令行,并输入如下命令:

yarn add @emotion/core

成功安装库后,在components目录中添加一个YdButton2.tsx文件,其代码如下:

import React, { useState } from 'react';
/**@jsx jsx */
import { jsx, css } from '@emotion/core';
const YdButton2: React.FC = () => {
const [count, setCount] = useState(0);
const handleClick = () => {
setCount(count + 1);
};
return (
<div css={css`
margin:100px;
`}>
<span css={css`
margin-right:10px;
`}>
{count}
</span>
<button css={css`
height: 20px;
line-height: 20px;
min-width: 30px;
text-align: center;
vertical-align: middle;
font-size: 12px;
color: #fff;
background-color: rgb(16, 134, 207);
border: 0;
`} onClick={handleClick}>
plus
</button>
</div>
)
}
export default YdButton2;

在此文件中,首先需要导入库@emotion/core,然后就可以在元素中用css={css`样式定义 `}来进行CSS样式的编写工作。

useState通过在函数组件里调用它来给组件添加一些内部 state,它是 React 16.8 的新增特性,也是一种Hook操作,可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。

React 会在重复渲染时保留这个 state。useState 会返回一对值:当前状态和一个让你更新它的函数,你可以在事件处理函数中或其他一些地方调用这个函数。它类似 class 组件的 this.setState,但是它不会把新的 state 和旧的 state 进行合并。其中useState(0)会推测变量count为int类型。

其次,对文件index.tsx进行修改,导入./components/YdButton2即可使用新定义的组件:

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
// import './components/YdButton.css';
// import YdButton from './components/YdButton';
import YdButton2 from './components/YdButton2';
import * as serviceWorker from './serviceWorker';
ReactDOM.render(
<React.StrictMode>
{/* <YdButton>Button</YdButton> */}
<YdButton2 />
</React.StrictMode>,
document.getElementById('root')
);
serviceWorker.unregister();

在命令行执行yarn start,启动程序,单击界面上的【plus】按钮就可以对数值进行累加。



用户头像

JackWangGeek

关注

以匠人之精神,垒软件之砖 2020.01.10 加入

硕士,徐州软件协会副理事长,某创业公司合伙人

评论

发布
暂无评论
React TypeScript 项目基本构建2