Ich versuche, etwas wie das Folgende zu tun, aber es gibt null zurück:
import { Button as styledButton } from 'component-library'
dann versuchen, es als zu rendern:
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>
)
}
}
Der Grund ist, ich muss die Button
-Komponente aus einer Bibliothek importieren und auch eine Wrapper-Komponente mit demselben Namen exportieren, wobei die Funktionalität der importierten Komponente erhalten bleibt. Wenn ich es bei import { Button } from component library
belasse, erhalte ich natürlich einen Fehler bei der mehrfachen Deklaration.
Irgendwelche Ideen?
Ihre Syntax ist gültig. JSX ist Syntaxzucker für React.createElement (type). Solange der Typ ein gültiger React-Typ ist, kann er in JSX-Tags verwendet werden. Wenn Button null ist, ist der Import nicht korrekt. Vielleicht ist Button ein Standardexport aus der Komponentenbibliothek. Versuchen:
import {default as StyledButton} from "component-library";
Die andere Möglichkeit ist, dass Ihre Bibliothek Commonjs-Exporte verwendet, d. H. module.exports = foo
. In diesem Fall können Sie folgendermaßen importieren:
import * as componentLibrary from "component-library";
Benutzerdefinierte Komponenten müssen aktiviert werden
https://reactjs.org/docs/jsx-in-depth.html#user-defined-components-must-be-capitalized
Ändern Sie Ihren Code in
import { Button as StyledButton } from 'component-library';
....bah...bah....bah
<StyledButton {...this.props}></StyledButton>
Keine Ahnung, warum ich den Import nicht aliasieren kann;
Als Workaround habe ich folgendes getan:
import React, { PropTypes } from "react";
import * as StyledLibrary from 'component-library';
export default class Button extends React.Component {
constructor(props){
super(props)
}
render() {
return (
<StyledLibrary.Button {...this.props}></StyledLibrary.Button>
)
}
}
Danke euch allen
beachten Sie, dass StyledLibrary großgeschrieben wurde und es funktioniert hat
in der ursprünglichen Frage haben Sie styledButton jedoch nicht groß geschrieben, und es hat nicht funktioniert
beide sind die erwarteten Ergebnisse mit React
sie haben also keine Problemumgehung entdeckt. Sie haben lediglich die (dokumentierte) Reaktion von Dingen entdeckt
Versuchen Sie auf diese Weise zu importieren
import {default as StyledLibrary} from 'component-library';
Ich nehme an, Sie exportieren
export default StyledLibrary