Eri*_*sky 5 ecmascript-6 reactjs babeljs styled-jsx
我正在尝试将 styled-jsx 与一些代码一起使用。但是,无论我做什么,我似乎都会遇到错误
index.js:1437 Warning: Received `true` for a non-boolean attribute `jsx`.
If you want to write it to the DOM, pass a string instead: jsx="true" or jsx={value.toString()}.
in style (at App.js:12)
in div (at App.js:9)
in Test (created by Route)
in Route (at App.js:29)
in Router (created by BrowserRouter)
in BrowserRouter (at App.js:27)
in App (at src/index.js:7)
Run Code Online (Sandbox Code Playgroud)
我尝试重新安装 node_modules,确保我的配置都很好,并测试了不同的版本。
我的 package.json,
{
"name": "preview",
"version": "0.1.0",
"private": true,
"dependencies": {
"contentful": "^7.4.1",
"react": "^16.8.6",
"react-dom": "^16.8.4",
"react-router-dom": "^4.3.1",
"react-scripts": "^3.0.1",
"socket.io-client": "^2.2.0",
"styled-jsx": "^3.2.1"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"babel": {
"presets": [
"@babel/preset-stage-2"
],
"plugins": [
"styled-jsx/babel"
]
},
"browserslist": [
">0.2%",
"not dead",
"not ie <= 11",
"not op_mini all"
],
"proxy": "http://localhost:5000/"
}
Run Code Online (Sandbox Code Playgroud)
我的示例 React 代码仍然抛出错误。
const Test = () => {
return (
<div>
<p>test
</p>
<style jsx>{
`
p {
color: red;
}
`
}
</style>
</div>)
}
class App extends Component {
render () {
return (
<Router>
<Route path='/test' component={Test}/>
</Router>
)
}
}
export default App;
Run Code Online (Sandbox Code Playgroud)
我希望不会有任何基于文档的错误消息
这个问题的答案在警告中。只需将样式的 jsx 属性类型从布尔值转换为字符串即可:
从:<style jsx> {your style here} </style>
到:<style jsx="true"> {your style here} </style>
好的。由于我自己花了几个小时才解决这个问题,所以我希望我可以帮助你们也有这个问题。
要styled-jsx与 一起使用create-react-app,您需要:
yarn add react-app-rewired customize-cra
替换为package.json:
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
Run Code Online (Sandbox Code Playgroud)
和
"start": "react-app-rewired start",
"build": "react-app-rewired build",
"test": "react-app-rewired test",
Run Code Online (Sandbox Code Playgroud)
package.json)文件config-overrides.js"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
Run Code Online (Sandbox Code Playgroud)
.babelrc(仅在运行时使用jest test)"start": "react-app-rewired start",
"build": "react-app-rewired build",
"test": "react-app-rewired test",
Run Code Online (Sandbox Code Playgroud)
index.js(或者你将 React 安装到 DOM 中的地方),在调用之前ReactDOM.render(...),插入以下代码,取自styled-jsx问题 #560const { override, addBabelPlugin, addBabelPreset } = require('customize-cra');
module.exports = override(
addBabelPlugin('styled-jsx/babel')
);
Run Code Online (Sandbox Code Playgroud)
不幸的是,如果没有它,这种复杂的配置就有点变化无常。
yarn build仅当您使用或yarn test与 create-react-app 一起使用时,才需要步骤 4 和 5 。
Jua*_*aza -2
使用样式组件。不支持嵌套样式。看看https://github.com/zeit/styled-jsx/pull/260 避免这个:
<div>
<span>
<style jsx>{...}</style>
</span>
</div>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3147 次 |
| 最近记录: |