代码之家  ›  专栏  ›  技术社区  ›  jorgen

React样式组件的设置

  •  0
  • jorgen  · 技术社区  · 6 年前

    我无法让样式化的组件工作;必须是我的设置中的某个东西。以下是组件:

    import React from 'react';
    import styled from 'styled-components';
    
    const Wrapper = styled.div`
      display: flex;
      justify-content: center;
      margin-top: 100px;
    `;
    
    const TestComponent = () => (
      <Wrapper>
        TEST
      </Wrapper>
    );
    
    export default TestComponent;
    

    渲染时只是 <div> 带着一个时髦的 class 但没有风格。

    我的 package.json :

    {
      "name": "Lolland",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "start": "webpack-dev-server --open --mode development",
        "build": "webpack"
      },
      "keywords": [],
      "author": "",
      "license": "ISC",
      "dependencies": {
        "@babel/runtime": "^7.0.0",
        "axios": "^0.18.0",
        "babel-plugin-styled-components": "^1.6.0",
        "babel-runtime": "^6.26.0",
        "history": "^4.7.2",
        "mobx": "^5.1.0",
        "mobx-react": "^5.2.5",
        "mobx-react-router": "^4.0.4",
        "mobx-rest": "^2.2.5",
        "mobx-rest-axios-adapter": "^2.1.1",
        "prop-types": "^15.6.2",
        "query-string": "^6.1.0",
        "react": "^16.4.2",
        "react-dom": "^16.4.2",
        "react-router": "^4.3.1",
        "react-spinners": "^0.4.5",
        "recompose": "^0.30.0",
        "styled-components": "^3.4.5"
      },
      "devDependencies": {
        "@babel/core": "^7.0.0",
        "@babel/plugin-transform-runtime": "^7.0.0",
        "@babel/preset-env": "^7.0.0",
        "@babel/preset-react": "^7.0.0",
        "babel-loader": "^8.0.0",
        "babel-plugin-styled-components": "^1.6.0",
        "eslint": "^5.4.0",
        "eslint-config-airbnb": "^17.1.0",
        "eslint-plugin-import": "^2.14.0",
        "eslint-plugin-jsx-a11y": "^6.1.1",
        "eslint-plugin-react": "^7.11.1",
        "html-loader": "^0.5.5",
        "html-webpack-plugin": "^3.2.0",
        "webpack": "^4.17.1",
        "webpack-cli": "^3.1.0",
        "webpack-dev-server": "^3.1.7"
      }
    }
    

    我的 .babelrc

    {
      "presets": ["@babel/preset-env", "@babel/preset-react"],
      "plugins": ["@babel/plugin-transform-runtime", "emotion", "babel-plugin-styled-components"]
    }
    

    还有我的 webpack.config.js

    const HtmlWebPackPlugin = require('html-webpack-plugin');
    
    module.exports = {
      module: {
        rules: [
          {
            test: /\.js$/,
            exclude: /node_modules/,
            use: {
              loader: 'babel-loader',
            },
          },
          {
            test: /\.html$/,
            use: [
              {
                loader: 'html-loader',
              },
            ],
          },
        ],
      },
      plugins: [
        new HtmlWebPackPlugin({
          template: './src/index.html',
          filename: './index.html',
        }),
      ],
    };
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   Pavel Denisjuk    6 年前

    我们一起在评论中找到了答案,但对于那些在将来遇到麻烦的人:

    styled-components 之前 emotion 解决冲突,因为情感插件解析导入声明并基于此执行其魔法。看到了吗 code here 样式化组件 另一方面,插件解析 package name ,但仍使用导入声明,因此发生冲突。