Я новичок-реагент. Мне интересно, есть ли «правильный» способ разработки адаптивного приложения? Поскольку документация по-прежнему очень недостаточна, я боюсь, что могу ее разработать очень неправильно, и я предпочитаю исправлять ошибку сейчас, а не после того, как проект расширяется. Из того, что я понимаю из своего предыдущего опыта, мы не должны комбинировать все страницы в одном файле .js, но как каждый компонент может взаимодействовать друг с другом?Правильный способ разработки реактивного приложения
я сейчас делаю, как это внутри index.android.js:
import Login from './Login';
import Register from './Register';
import Home from './Home';
class TheProject extends Component {
renderScene (route, navigator) {
_navigator = navigator;
switch (route.index) {
case 'Login':
return (
<View style={styles.container}>
<Login navigator={navigator} />
</View>
);
case 'Register':
return (
<View style={styles.container}>
<Register navigator={navigator} />
</View>
);
}
}
render() {
return (
<Navigator
initialRoute={{index: 'Login'}}
renderScene={this.renderScene}
/>
);
}
}
var styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'space-around',
backgroundColor: '#F0F0F0',
flexWrap:'wrap'
},
});
AppRegistry.registerComponent('TheProject', function() { return TheProject });
module.exports = TheProject;
и в моем Login.js (other.js файл будет похож):
export default class Login extends React.Component {
constructor(props) {
super(props);
this.state = {
username: '',
password: '',
};
}
registerOnPress() {
this.props.navigator.push({
index: 'Register'
});
}
loginOnPress() {
if (this.state.username != '' && this.state.password != '') {
Alert.alert('Success!', 'Successfully logged in.');
this.props.navigator.push({
index: 'Home'
});
} else {
Alert.alert('Failed to log-in', 'Wrong username or password');
}
}
render() {
return (
<View style={styles.individualContainer}>
<View style={styles.content}>
<View style={styles.formField}>
<View style={styles.input}>
<Text style={styles.label}>Username : </Text>
<View style={styles.fieldBox}>
<TextInput
style={styles.field}
underlineColorAndroid={'transparent'}
onChangeText={(data) => this.setState({ username: data })}
/>
</View>
</View>
<View style={styles.input}>
<Text style={styles.label}>Password : </Text>
<View style={styles.fieldBox}>
<TextInput
style={styles.field}
underlineColorAndroid={'transparent'}
secureTextEntry={true}
onChangeText={(data) => this.setState({ password: data })}
/>
</View>
</View>
</View>
<View style={styles.input}>
<TouchableHighlight style={styles.buttonBox} onPress={this.loginOnPress.bind(this)}>
<Text style={styles.buttonText}>Login</Text>
</TouchableHighlight>
</View>
<View style={styles.input}>
<TouchableHighlight style={styles.buttonBox} onPress={this.registerOnPress.bind(this)}>
<Text style={styles.buttonText}>Register</Text>
</TouchableHighlight>
</View>
</View>
</View>
);
}
}
Я знаю, есть много способов развития, но я на правильном пути? Я довольно размытый, когда речь заходит о монтировании и размонтировании компонентов.
Hi Adam, спасибо большое за ответ и за предложение. Но в вашей перспективе мой код выше способен поддерживать себя, когда приложение расширяется? Или у вас есть какая-либо другая рекомендация о том, как исправить ошибку, которую я, возможно, сделал? –
Я не вижу ничего такого, что выпрыгивает как огромная ошибка. Возможно, посмотрите на использование [умных компонентов и немых компонентов] (https: // medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0#.btnns6n7h). –