我try 执行以下操作,但返回null:

import { Button as styledButton } from 'component-library'

然后try 将其渲染为:

import React, { PropTypes } from "react";
import cx from 'classNames';

import { Button as styledButton } from 'component-library';

export default class Button extends React.Component {
    constructor(props){
        super(props)
    }
    render() {
        return (
                <styledButton {...this.props}></styledButton>
        )
    }
}

原因是,我需要从库中导入Button组件,还需要导出一个具有相同名称的包装器组件,但要维护导入组件的功能.如果我把它放在import { Button } from component library,那么当然,我会得到一个多重声明错误.

有什么 idea 吗?

推荐答案

你的语法是有效的.JSX是React的语法糖.createElement(类型),所以只要类型是有效的React类型,就可以在JSX"标记"中使用它.如果按钮为空,则说明导入不正确.可能按钮是组件库的默认导出.try :

import {default as StyledButton} from "component-library";

另一种可能性是,您的库正在使用commonjs导出,即module.exports = foo.在这种情况下,您可以这样导入:

import * as componentLibrary from "component-library";

使现代化

由于这是一个流行的答案,这里有更多的花絮:

export default Button              -> import Button from './button'
                                      const Button = require('./button').default
         
export const Button                -> import { Button } from './button'
                                      const { Button } = require('./button')
         
export { Button }                  -> import { Button } from './button'
                                      const { Button } = require('./button')
         
module.exports.Button              -> import { Button } from './button'
                                      const { Button } = require('./button')

module.exports.Button = Button     -> import { Button } from './button'
                                      const { Button } = require('./button')

module.exports = Button            -> import * as Button from './button'
                                      const Button = require('./button')

Reactjs相关问答推荐

CSS转换不适用于React MUI对象

如何使用react-router-dom导航到网页中的其他路由?

构建next.js项目时状态不变,但在dev服务器中

如何使用Reducer更新全局变量

关于同一位置的不同组件实例的react S规则被视为相同组件

更改滑块标记的文本 colored颜色 ./Reaction/MUI 5

使用自动播放的视频组件呈现登录页面时出现JEST测试错误

StrictMode+SetInterval=双重渲染(即使使用useEffect清理)

Chart.js如何go 除边框

Next.js `getLayout` 函数没有被调用

从ReactDataGridtry 将数据传递给父组件

Stripe Checkout:是否可以创建不自动续订的订阅?

useEffect 渲染没有依赖数组的组件

React js中不记名令牌中的空间问题

如何通过onpress on view in react native flatlist来降低和增加特定视图的高度?

有没有办法根据 Rechart 中的 activeDot 更改值?

React + i18next + Trans + Prettier:Prettier 最终会在重新格式化 JSX 时 destruct 翻译

使用 useRef(uuid()) 的目的是什么?

找不到元素 - 这是参考问题吗?

Rtk 查询无效标签不使数据无效