Problème d'erreur de réagir-composants bootstrap

J'ai récemment migré de l'utilisation de Twitter-bootstrap dans les classes réactives à l'aide de réactive-bootstrap. Je voulais tester la fonction-boot-bootstrap Navbar. Mon code est comme:

import React from 'react'; import { Link } from 'react-router'; import Radium from 'radium'; import Grid from 'bootstrap-grid-react'; import * as bootstrap from "react-bootstrap"; export default class Layout extends React.Component { constructor() { super(); this.state = {}; } render() { let {Nav, Navbar, NavItem, NavDropdown, MenuItem} = bootstrap; return ( <div> <Navbar> <Navbar.Header> <Navbar.Brand> <a href="#">APITest</a> </Navbar.Brand> </Navbar.Header> <Nav> <NavItem eventKey={1} href="#">New user </NavItem> <NavItem eventKey={2} href="#">Create New User</NavItem> <NavDropdown eventKey={3} title="Dropdown" id="basic-nav-dropdown"> <MenuItem eventKey={3.1}>Action</MenuItem> <MenuItem eventKey={3.2}>Another action</MenuItem> <MenuItem eventKey={3.3}>Something else here</MenuItem> <MenuItem divider /> <MenuItem eventKey={3.3}>Separated link</MenuItem> </NavDropdown> </Nav> </Navbar> </div> ) } } 

Cependant, cela me donne une erreur

Erreur non détectée: Violence invariante: le type d'élément est invalide: une chaîne attendue (pour les composants intégrés) ou une classe / fonction (pour les composants composites) mais a obtenu: non défini. Vérifiez la méthode de rendu de la Layout .

Et un avertissement:

Avertissement: React.createElement: type ne doit pas être nul, indéfini, booléen ou numéro. Il devrait s'agir d'une chaîne (pour les éléments DOM) ou d'une ReactClass (pour les composants composites). Vérifiez la méthode de rendu de la Layout .

J'ai également essayé d'utiliser l' import {Nav, Navbar, NavItem, NavDropdown, MenuItem} from 'react-bootstrap' mais cela ne fonctionnera pas non plus. Il existe certainement un problème dans la façon dont j'utilise Navbar car une div normale rend très correct.

Toute aide est vraiment appréciée.

Après avoir traité de cette façon trop longtemps, j'ai constaté que le problème est le composant Link que vous utilisez depuis le routeur réactif . Je ne suis pas exactement sur les détails de l'erreur, mais il y a une solution. Au lieu d'utiliser Link, utilisez le composant LinkContainer fourni par reac -bootstrap-router https://github.com/react-bootstrap/react-router-bootstrap .

À partir des docs réactive-routeur-bootstrap:

 npm i -S react-router-bootstrap 

Dans votre code utilisez:

 <LinkContainer to={{ pathname: '/foo', query: { bar: 'baz' } }}> <Button>Foo</Button> </LinkContainer> 

Après une longue période de difficulté avec ça, j'ai finalement réussi à fonctionner le problème étant le div supplémentaire au-dessus de Navbar .

C'est mon code de travail final:

 import React from 'react'; import { Link } from 'react-router'; import Radium from 'radium'; import Grid from 'bootstrap-grid-react'; import {Nav, Navbar, NavItem, NavDropdown, MenuItem} from "react-bootstrap"; export default class Layout extends React.Component { constructor() { super(); this.state = {}; } render() { return ( <Navbar> <Navbar.Header> <Navbar.Brand> <a href="#">APITest</a> </Navbar.Brand> </Navbar.Header> <Nav> <NavItem eventKey={1} href="#">New user </NavItem> <NavItem eventKey={2} href="#">Create New User</NavItem> <NavDropdown eventKey={3} title="Dropdown" id="basic-nav-dropdown"> <MenuItem eventKey={3.1}>Action</MenuItem> <MenuItem eventKey={3.2}>Another action</MenuItem> <MenuItem eventKey={3.3}>Something else here</MenuItem> <MenuItem divider /> <MenuItem eventKey={3.3}>Separated link</MenuItem> </NavDropdown> </Nav> </Navbar> ) } } 

Je ne connais toujours pas la raison d'une erreur lors de l'emballage de la Navbar dans une div. N'hésitez pas à commenter pour toute explication.