我要像这样将Sick轮播的CSS导入我的根组件:
import React from 'react'
import PropTypes from 'prop-types'
import { ThemeProvider } from 'styled-components'
import { AppContext } from 'services/AppContext'
import Layout from 'components/blocks/Layout'
import { GlobalStyle, AppContainer } from 'shared/styles'
import theme from 'theme'
import 'slick-carousel/slick/slick.css'
import 'slick-carousel/slick/slick-theme.css'
function App({ Component, pageProps }) {
return (
<AppContext.Provider value={{ foo: 'bar' }}>
<ThemeProvider theme={theme}>
<AppContainer>
<GlobalStyle />
<Layout>
<Component {...pageProps} />
</Layout>
</AppContainer>
</ThemeProvider>
</AppContext.Provider>
)
}
App.propTypes = {
Component: PropTypes.elementType.isRequired,
pageProps: PropTypes.object.isRequired,
}
export default App
问题是样式没有应用到我的轮播中。
我尝试将CSS导入需要它的组件中,但是next.js给我一个错误,要么我必须将其导入到根组件中,要么使它成为组件级CSS,我不知道怎么做。
有什么建议吗?
答案 0 :(得分:1)
在使用react-slick时,我也遇到了这个问题,它需要滑块和导航箭头中的slick-carousel中很少的CSS。
目前,我有两种解决方法:
pages/_app.js
)// _app.css
...
import 'slick-carousel/slick/slick.css'
import 'slick-carousel/slick/slick-theme.css'
...
// page/_app.js
...
import "./_app.css"
...
注释:它可以使react-slick正常工作,但在所有页面上均会加载slick-carousel的CSS。不太好!
link
标签并将这些CSS嵌入到页面的<head>
// I downloaded the CSS, minified them and put in the public folder
/public/static/css/slick.css
/public/static/css/slick-theme.css
// page/example.js
import Head from "next/head"
...
<Head>
// Embed local CSS
<link rel="stylesheet" type="text/css" href="/static/css/slick.css" />
<link rel="stylesheet" type="text/css" href="/static/css/slick-theme.css" />
// Or we can change the href to CDNs too
</Head>
注释:我们仅在需要的页面中嵌入和加载样式,也许有助于节省字节数。