如果想在React中想要像Vue一样把css和js写到一个文件中,可以使用CSS-in-JS。
使用CSS-in-JS
下载
npm i styled-components
使用
就像写scss一样,不过需要声明元素的类型
基本语法及展示如下,
import styled from "styled-components"export default () => {const Father = styled.div`width: 200px;height: 200px;background: pink;span {font-size: 20px;}&: hover {background: skyblue;}`const Son = styled.span`color: #f8e;`return (<><Father><Son>我是Son</Son></Father></>)
}
也可以通过styled()选择要继承的样式,并且可以拿到状态。
import { useState } from "react"
import styled from "styled-components"
export default () => {const Father = styled.div`width: 200px;height: 200px;background: pink;span {font-size: 20px;}&: hover {background: skyblue;}`const Son = styled.span`color: #f8e;`const Footer = styled(Father)`display: ${({ isShow }) => (isShow ? "block" : "none")};padding: 20px;border: 1px solid #333;border-radius: 30px;`const [show, setShow] = useState(false)return (<><Father><Son>我是Son</Son></Father><button onClick={() => setShow(!show)}>点我控制Footer的显示/隐藏</button><Footer isShow={show}>我是Footer</Footer></>)
}