Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 在ES6中重新声明标识符_Reactjs_Styled Components - Fatal编程技术网

Reactjs 在ES6中重新声明标识符

Reactjs 在ES6中重新声明标识符,reactjs,styled-components,Reactjs,Styled Components,很可能是一个愚蠢的问题,但有没有办法用相同的标识符重新声明变量?为了命名约定,我想做一些与下面类似的事情 export let Navbar = styled(Navbar)` STYLES GO HERE ` 但是,由于范围限制,我无法将样式添加到Navbar并将标识符保留为Navbar。导航栏已经声明 有什么想法吗?我们试图用样式来包装我们的组件,但保持它们的名称相同 例如,这个例子可以工作,但是打破了我们用于常规html元素的惯例 export let StyledNavbar = st

很可能是一个愚蠢的问题,但有没有办法用相同的标识符重新声明变量?为了命名约定,我想做一些与下面类似的事情

export let Navbar = styled(Navbar)` STYLES GO HERE `
但是,由于范围限制,我无法将样式添加到Navbar并将标识符保留为Navbar。导航栏已经声明

有什么想法吗?我们试图用样式来包装我们的组件,但保持它们的名称相同

例如,这个例子可以工作,但是打破了我们用于常规html元素的惯例

export let StyledNavbar = styled(Navbar)` STYLES GO HERE `

也许试着用构图

const StyledNavbar = style.div`
    padding: 10px;
    background: blue;
    font-size: 12px;
`

export class Navbar extends React.Component {
    render() {
        return <StyledNavbar>Hello World</StyledNavbar>;
    }
}

也许你在找

Navbar = styled(Navbar)` STYLES GO HERE `
export {Navbar}
?

如果变量是用let或var声明的,则可以为其分配一个新值并将其导出

你可以反过来做:

export let Navbar = initialValue;
Navbar = styled(Navbar)` STYLES GO HERE `

我不知道这是否最适合您的用例,但您可以使用别名

import {NavBar as StyledNav} from "./navBar;
const NavBar = styled(StyledNav)`YOUR CODE HERE`;

我认为以下措施应该有效:

const StyledNavbar = styled(Navbar);
export { StyledNavbar as Navbar };

谢谢,就是这样。我不需要let,因为组件是进口的,这很有意义。好吧,我撒谎了。我建立了一个静态站点,它给了我一个假阳性。这个问题仍然存在。从另一个包导入的任何组件即使使用let或var也无法重新声明。是的,导入是只读的。然后必须创建一个新变量。没办法。