相邻的 JSX 元素必须包裹在封闭标签中
Adjacent JSX elements must be wrapped in an enclosing tag
我想在我的 React-Native 应用程序的每个页面的底部都有一个导航栏,在每个页面的顶部都有一个工具栏。但是,如果我在 index.ios.js 文件中创建这两个元素,我会得到错误:"Adjacent JSX elements must be wrapped in an enclosing tag"。如果我在 Navigator 和 NavBar 周围放置标签,我只会在我的应用程序中看到一个空白屏幕。我应该怎么办?这是我的渲染函数在 index.ios.js
中的样子
render() {
return (
<Navigator
initialRoute={{name: 'Login'}}
renderScene={this.renderScene}
navigationBar={
<Navigator.NavigationBar
style={ styles.nav }
routeMapper={ NavigationBarRouteMapper } />
}
/>
<NavBar />
);
}
当你将它包装在视图中时,确保将 flex 设置为 1。我的猜测是你给它的视图没有大小,因此子元素从父元素继承它们的大小(为 0 )
将两者都包装在视图中,并为外部视图包装器指定 flex 1 样式。示例:
<View style={{flex: 1}}>
<Navigator
{. . .}
/>
<NavBar />
</View>
根据 React 16,如果你不想避免 <View>
包装,
您可以 return 将多个组件渲染为一个数组。
return ([
<Navigator key="navigator" />,
<NavBar key="navbar" />
]);
或者在无状态的 ES6 组件中:
import React from 'react';
const Component = () => [
<Navigator key="navigator" />,
<NavBar key="navbar" />
];
export default Component;
不要忘记密钥 属性,因为 React 需要(对于 Array 上的迭代)能够区分您的组件。
编辑(2018 年 11 月)
您也可以使用 React.Fragment
shorthand:
render() {
return (
<>
<ChildA />
<ChildB />
<ChildC />
</>
);
}
我想在我的 React-Native 应用程序的每个页面的底部都有一个导航栏,在每个页面的顶部都有一个工具栏。但是,如果我在 index.ios.js 文件中创建这两个元素,我会得到错误:"Adjacent JSX elements must be wrapped in an enclosing tag"。如果我在 Navigator 和 NavBar 周围放置标签,我只会在我的应用程序中看到一个空白屏幕。我应该怎么办?这是我的渲染函数在 index.ios.js
中的样子render() {
return (
<Navigator
initialRoute={{name: 'Login'}}
renderScene={this.renderScene}
navigationBar={
<Navigator.NavigationBar
style={ styles.nav }
routeMapper={ NavigationBarRouteMapper } />
}
/>
<NavBar />
);
}
当你将它包装在视图中时,确保将 flex 设置为 1。我的猜测是你给它的视图没有大小,因此子元素从父元素继承它们的大小(为 0 )
将两者都包装在视图中,并为外部视图包装器指定 flex 1 样式。示例:
<View style={{flex: 1}}>
<Navigator
{. . .}
/>
<NavBar />
</View>
根据 React 16,如果你不想避免 <View>
包装,
您可以 return 将多个组件渲染为一个数组。
return ([
<Navigator key="navigator" />,
<NavBar key="navbar" />
]);
或者在无状态的 ES6 组件中:
import React from 'react';
const Component = () => [
<Navigator key="navigator" />,
<NavBar key="navbar" />
];
export default Component;
不要忘记密钥 属性,因为 React 需要(对于 Array 上的迭代)能够区分您的组件。
编辑(2018 年 11 月)
您也可以使用 React.Fragment
shorthand:
render() {
return (
<>
<ChildA />
<ChildB />
<ChildC />
</>
);
}