2016-11-30 42 views
1

内ES和谐风格的一个剧本,我会分解为不同组件不同风格的阵营如下面的代码:我可以发布我在ES和声风格JavaScript中导入的内容吗?

import React from 'react'; 

/** Modules */ 
import style from './main.css'; 

export class TableBody extends React.Component { 
    constructor(props) { 
    } 

    componentDidMount() { 
    } 

    componentWillUnmount() { 
     /** release style */ 
    } 
} 

而且有没有什么办法来释放我的方法componentWillUnmount前进口的风格,所以该组件的样式不会影响其他组件?

在问这个问题之前,我尝试了一些方法,例如使用delete或将它分配给一个null对象,但它们都不能工作。

+0

谢谢您的回答@AndreLee,但我不认为这是通过增加哈希码来解决它的好方法,因为它可能会在类名失去其可读性。当然,我可以选择使用postcss作为一个css管理工具来动态管理这个加载。 –

+0

哈希码由加载程序添加,您不会失去可读性。 CSS模块的概念是为了解决您的问题而设计的,它不污染其他类并保持可读性。 –

+0

这不是一种解决方法。您可以检查[本条](https://css-tricks.com/css-modules-part-3-react/)为更多地了解CSS模块。顺便说一句,你可以看到我的webpack配置,我也使用预处理器postcss。 –

回答

3

如果您使用的是CSS moduleswebpack,那么您在React组件中导入的每个CSS文件都可以添加一个前缀或您喜欢的其他格式。

的现实世界的例子会是这样class="ChatListItem__unread___249Kw"

而且很难,除非你真的用在你的反应的组分ChatListItem__unread___249Kw以影响其他部件。 (该249Kw是一个散列码,在生产环境中,你只可以通过配置保持它。)

配置为CSS装载机的WebPack配置

{ 
    test: /\.css$/, 
    loader: 'style!css?modules&importLoaders=1&' + 
    'localIdentName=[name]__[local]___[hash:base64:5]!postcss', 
    }, 

阵营组件&其CSS文件结构

React Component File Struc

你导入CSS文件的方式可以改写

import React from 'react'; 

/** Modules */ 
import styles from './TableBody.css'; 

export class TableBody extends React.Component { 
    constructor(props) { 
    } 

    componentDidMount() { 
    } 

    componentWillUnmount() { 
     /** release style */ 
    } 

    render() { 
     return <div className={styles.theClassName}></div> 
    } 
} 
+0

好!我会在稍后尝试,如果它有效,我会将您的答案标记为已接受的答案。 –

+0

@PuiManCheui没有问题,随时询问如果答案是不明确的给你。 –