Javascript React原生Android中视图之间的导航示例?
在查看React本机文档之后,我仍然不了解在不同组件之间创建视图和导航的最佳方法 我不想使用任何外部组件,如: 我不需要导航栏,我只想设置视图并向左、向右滑动以弹出视图,仅此而已 我知道这是一些基本的东西,但我找不到任何有用的例子 拜托,有人能帮我吗?中有功能示例吗 谢谢。我发现了这个例子: 我写了一篇关于它的教程: 了解React Native中的导航非常有帮助:Javascript React原生Android中视图之间的导航示例?,javascript,react-native,Javascript,React Native,在查看React本机文档之后,我仍然不了解在不同组件之间创建视图和导航的最佳方法 我不想使用任何外部组件,如: 我不需要导航栏,我只想设置视图并向左、向右滑动以弹出视图,仅此而已 我知道这是一些基本的东西,但我找不到任何有用的例子 拜托,有人能帮我吗?中有功能示例吗 谢谢。我发现了这个例子: 我写了一篇关于它的教程: 了解React Native中的导航非常有帮助: 'use strict'; var React = require('react-native'); var {
'use strict';
var React = require('react-native');
var {
AppRegistry,
StyleSheet,
Text,
View,
Navigator,
TouchableOpacity,
} = React;
var SCREEN_WIDTH = require('Dimensions').get('window').width;
var BaseConfig = Navigator.SceneConfigs.FloatFromRight;
var CustomLeftToRightGesture = Object.assign({}, BaseConfig.gestures.pop, {
// Make it snap back really quickly after canceling pop
snapVelocity: 8,
// Make it so we can drag anywhere on the screen
edgeHitWidth: SCREEN_WIDTH,
});
var CustomSceneConfig = Object.assign({}, BaseConfig, {
// A very tighly wound spring will make this transition fast
springTension: 100,
springFriction: 1,
// Use our custom gesture defined above
gestures: {
pop: CustomLeftToRightGesture,
}
});
var PageOne = React.createClass({
_handlePress() {
this.props.navigator.push({id: 2,});
},
render() {
return (
<View style={[styles.container, {backgroundColor: 'green'}]}>
<Text style={styles.welcome}>Greetings!</Text>
<TouchableOpacity onPress={this._handlePress}>
<View style={{paddingVertical: 10, paddingHorizontal: 20, backgroundColor: 'black'}}>
<Text style={styles.welcome}>Go to page two</Text>
</View>
</TouchableOpacity>
</View>
)
},
});
var PageTwo = React.createClass({
_handlePress() {
this.props.navigator.pop();
},
render() {
return (
<View style={[styles.container, {backgroundColor: 'purple'}]}>
<Text style={styles.welcome}>This is page two!</Text>
<TouchableOpacity onPress={this._handlePress}>
<View style={{paddingVertical: 10, paddingHorizontal: 20, backgroundColor: 'black'}}>
<Text style={styles.welcome}>Go back</Text>
</View>
</TouchableOpacity>
</View>
)
},
});
var SampleApp = React.createClass({
_renderScene(route, navigator) {
if (route.id === 1) {
return <PageOne navigator={navigator} />
} else if (route.id === 2) {
return <PageTwo navigator={navigator} />
}
},
_configureScene(route) {
return CustomSceneConfig;
},
render() {
return (
<Navigator
initialRoute={{id: 1, }}
renderScene={this._renderScene}
configureScene={this._configureScene} />
);
}
});
var styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
color: 'white',
},
});
AppRegistry.registerComponent('SampleApp', () => SampleApp);
module.exports = SampleApp;
“严格使用”;
var React=require('React-native');
变量{
评估学,
样式表,
文本,
看法
领航员,
可触摸不透明度,
}=反应;
var SCREEN_WIDTH=require('Dimensions').get('window').WIDTH;
var BaseConfig=Navigator.sceneconfig.FloatFromRight;
var customLeftToRightSpiration=Object.assign({},BaseConfig.pirters.pop{
//取消pop后,使其快速恢复
速度:8,
//这样我们就可以拖动屏幕上的任何地方
边缘宽度:屏幕宽度,
});
var CustomSceneConfig=Object.assign({},BaseConfig{
//一个绕得很紧的弹簧会使这种转变很快
弹簧张力:100,
弹簧摩擦:1,
//使用上面定义的自定义手势
手势:{
pop:CustomLeftToRight手势,
}
});
var PageOne=React.createClass({
_女佣(){
this.props.navigator.push({id:2,});
},
render(){
返回(
问候语!
转到第二页
)
},
});
var PageTwo=React.createClass({
_女佣(){
this.props.navigator.pop();
},
render(){
返回(
这是第二页!
回去
)
},
});
var SampleApp=React.createClass({
_renderScene(路线、导航器){
如果(route.id==1){
返回
}else if(route.id==2){
返回
}
},
_配置场景(路线){
返回CustomSceneFig;
},
render(){
返回(
);
}
});
var styles=StyleSheet.create({
容器:{
弹性:1,
为内容辩护:“中心”,
对齐项目:“居中”,
背景颜色:“#F5FCFF”,
},
欢迎:{
尺寸:20,
textAlign:'中心',
差额:10,
颜色:'白色',
},
});
AppRegistry.registerComponent('SampleApp',()=>SampleApp);
module.exports=SampleApp;
2018年4月更新:
自从我第一次回答以来,情况发生了变化,今天有两个大型库与导航相关:react导航和react本地导航
我将为react navigation编写一个示例,它是一个易于使用的库,由社区的严肃人士维护完整的JS
首先安装库:
yarn add react-navigation
或
然后在应用程序入口点(index.js)中:
您可以看到,我们将一个对象传递给StackNavigator,这都是我们的屏幕配置,下面是一个配置示例:
import HomeScreen from "./HomeScreen";
import SettingsScreen from "./SettingsScreen";
const Config = {
navigation: {
Home: {
screen: HomeScreen
},
Settings: {
screen: SettingsScreen,
}
}
}
现在应用程序知道了我们得到的每个屏幕。我们可以简单地告诉“导航”功能转到我们的设置屏幕。
让我们看一下主屏幕:
class HomeScene extends Component {
constructor(props) {
super(props);
}
render () {
return (
<View>
<Button
title="Go to Settings"
onPress={() => this.props.navigation.navigate('Settings')}
/>
</View>
);
}
}
类HomeScene扩展组件{
建造师(道具){
超级(道具);
}
渲染(){
返回(
this.props.navigation.navigate('Settings')}
/>
);
}
}
如您所见,导航将为道具添加水分。从这里你可以做你想要的
转到库文档查看所有您可以做的事情:更改标题类型、标题、导航类型
先前的答案:
看这个例子:
这是一个很有用的、写得很好的导航器示例,我认为它比您刚才编写的示例要好
主要观察LoginPage.js
和MainPage.js
之间的关系,我建议你使用,你可以看看导航栏
- 为iOS和Android构建的组件
- 在、和之间选择
- 实施你的
- 发展自己
- 在移动应用程序、具有服务器渲染的web应用程序之间共享逻辑
- 这是非常严格的
- 它是redux集成的
- 这是超级容易李>
- 将成为react native建议的官方导航器李>
npm install --save react-navigation
在应用程序中导入它
import {
TabNavigator,
} from 'react-navigation';
const BasicApp = TabNavigator({
Main: {screen: MainScreen},
Setup: {screen: SetupScreen},
});
…并导航
class MainScreen extends React.Component {
static navigationOptions = {
label: 'Home',
};
render() {
const { navigate } = this.props.navigation;
return (
<Button
title="Go to Setup Tab"
onPress={() => navigate('Setup')}
/>
);
}
}
class主屏幕扩展了React.Component{
静态导航选项={
标签:“家”,
};
render(){
const{navigate}=this.props.navigation;
返回(
导航('Setup')}
/>
);
}
}
您所描述的内容符合导航器的要求
这是一个在我的android设备上经过测试和运行的示例。谢谢你能告诉我,如何在开发android应用程序时发现错误吗。我使用的是android studio,每当出现任何错误,比如意外令牌,都很难找到确切的错误。您可以将设备连接到计算机,并使用chrome进行调试,以检查控制台日志:@MohamedHussien上的DPlease report issue on@MohamedHussien您是否在项目目录中?返回的错误是什么?到目前为止,我对react navigation没有任何不满,文档不好,可能是因为您正在开发简单的hello world应用程序,但如果您需要复杂的导航,它确实不清楚。我知道API自项目开始以来已经发生了变化,但项目非常棒,查看以下示例,了解如何自定义转换。可以告诉我们另外,我们如何将动态值或对象从一个页面传递到另一个页面?我尝试了大量的例子/解决方案,但没有成功。你可以在LoginPage.js的第36行传递一些道具。然而,自从我回答这个问题以来,navigator
import {
TabNavigator,
} from 'react-navigation';
const BasicApp = TabNavigator({
Main: {screen: MainScreen},
Setup: {screen: SetupScreen},
});
class MainScreen extends React.Component {
static navigationOptions = {
label: 'Home',
};
render() {
const { navigate } = this.props.navigation;
return (
<Button
title="Go to Setup Tab"
onPress={() => navigate('Setup')}
/>
);
}
}