我在React Native应用中创建了注册功能。 我在渲染中有一个可触摸的亮点:
<TouchableHighlight style={styles.button} onPress={this._handleSignUp}>
<Text style={styles.white_text}>Sign Up</Text>
</TouchableHighlight>
&#13;
_handleSignUp: function(){
fetch('https://api.parse.com/1/users', {
method: 'post',
headers: {
'X-Parse-Application-Id': 'MY_ID',
'X-Parse-REST-API-Key': 'MY_KEY',
'X-Parse-Revocable-Session': '1',
'Content-Type': 'application/json'
},
body: JSON.stringify({
username: this.state.username,
student_id: this.state.id,
password: this.state.password,
})
}).then((response) => response.text())
.then((responseText) => {
if (responseText.code=='201'){
// redirect to Profile Scene
}
});
},
&#13;
我们如何在React native中处理这种类型的重定向?
答案 0 :(得分:1)
使用
this.props.navigator.redirect(route)
没有道具只需使用this.navigator.redirect(route)
答案 1 :(得分:0)
您使用NavigatorIOS或较低级别的导航器。有关更多详细信息,请参阅此文档页面:
http://facebook.github.io/react-native/docs/navigator-comparison.html#content
Navigator和NavigatorIOS都是允许您使用的组件 在各种“场景”之间管理应用中的导航(另一个 屏幕上的字)。他们管理一个路由堆栈,让你弹出, 推动并替换状态。这样,它们类似于html5 历史API。
答案 2 :(得分:0)
您必须使用NavigationExperiemental。话虽如此,NavigationExperimental的级别太低了,使用第三方库在场景组件之间导航,以及获得移动UI模式常见的所有奇特的过渡动画可能要容易得多。如果您熟悉网络上的React Router,我强烈建议您查看React Router Native。
免责声明:我是作者。
该项目托管在GitHub上:
https://github.com/jmurzy/react-router-native
这是一个完全符合你想要的例子以及80以下的更多内容。
/**
* index.[ios|android].js
*/
import React from 'react';
import {
Header,
Link,
nativeHistory,
Route,
Router,
StackRoute,
withRouter,
} from 'react-router-native';
import {
AppRegistry,
ScrollView,
StyleSheet,
View,
} from 'react-native';
const styles = StyleSheet.create({
component: {
backgroundColor: '#FFFFFF',
flex: 1,
},
home: {
backgroundColor: '#FFFFFF',
flexDirection: 'row',
flexWrap: 'wrap',
justifyContent: 'center',
},
detailCard: {
height: 100,
margin: 20,
width: 100,
},
});
const Master = (props) => (
<View style={styles.component}>
{props.children}
</View>
);
const HomeHeader = withRouter((props) => {
const handleRightButtonPress = () => {
props.router.push('/detail/gray');
};
return (
<Header
{...props}
style={{ backgroundColor: '#26BBE5' }}
title="Feed"
rightButtonText="Gray"
onRightButtonPress={handleRightButtonPress}
/>
);
});
const Home = () => {
const DetailCard = ({ backgroundColor }) => (
<Link to={`/detail/${encodeURIComponent(backgroundColor)}`} style={styles.detailCard}>
<View style={{ flex: 1, backgroundColor }} />
</Link>
);
return (
<ScrollView style={styles.component} contentContainerStyle={styles.home}>
<DetailCard backgroundColor="#EF4E5E" />
<DetailCard backgroundColor="#9498CA" />
<DetailCard backgroundColor="#AFCCB3" />
<DetailCard backgroundColor="#F0D73D" />
<DetailCard backgroundColor="#A176B0" />
<DetailCard backgroundColor="#416BB4" />
<DetailCard backgroundColor="#94B5DC" />
<DetailCard backgroundColor="#D48445" />
</ScrollView>
);
};
const DetailHeader = withRouter((props) => {
const { routeParams } = props;
const title = routeParams.themeColor;
const backgroundColor = routeParams.themeColor;
const colors = ['#EF4E5E', '#D48445', '#AFCCB3', '#F0D73D', '#A176B0'];
const handleRightButtonPress = () => {
const randomIndex = Math.floor(Math.random() * colors.length);
const randomColor = colors[randomIndex];
props.router.push(`/detail/${encodeURIComponent(randomColor)}`);
};
return (
<Header
{...props}
title={title}
style={{ backgroundColor }}
leftButtonText="Back"
rightButtonText="Random"
onRightButtonPress={handleRightButtonPress}
/>
);
});
const Detail = (props) => (
<View style={[styles.component, { backgroundColor: '#FFFFFF' }]}>{props.children}</View>
);
const routes = (
/* Address Bar can be toggled on or off by setting the addressBar prop */
<Router history={nativeHistory} addressBar>
<StackRoute path="master" component={Master}>
<Route path="/" component={Home} overlayComponent={HomeHeader} />
<Route path="/detail/:themeColor" component={Detail} overlayComponent={DetailHeader} />
</StackRoute>
</Router>
);
AppRegistry.registerComponent('YourApp', () => () => routes);
答案 3 :(得分:-1)
我不确定这里有什么问题。
要么重定向到另一个页面,那么您的路由器将加载另一个组件。
或者,您可以在请求成功时直接呈现配置文件组件 React.render(,document.getElementById('thedivyouwanttoattachyourcomponent'));
我希望它有所帮助