Я хотел бы рассказать вам очень простой способ обновить использование навигации.
Ниже приведен пример вашего файла index.js
import React, { Component } from 'react';
import { StyleSheet, View } from 'react-native';
import { Main } from './navigation/Main';
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',
},
});
export class App extends Component {
render() {
return (
<View style={ styles.container }>
<Main />
</View>
);
}
}
Тогда вот ваш Main.js , который является вашим классом навигации. Вы можете объявить весь свой экран здесь.
import {
createStackNavigator,
createAppContainer,
} from 'react-navigation';
import { FirstScreen } from '../screens/FirstScreen';
import { SecondScreen } from '../screens/SecondScreen';
const RootStack = createStackNavigator({
FirstScreen: {
screen: FirstScreen,
key: 'FirstScreen',
navigationOptions: {
gesturesEnabled: false,
},
},
SecondScreen: {
screen: SecondScreen,
key: 'SecondScreen',
navigationOptions: {
gesturesEnabled: false,
},
},
});
export const Main = createAppContainer(RootStack);
Теперь вы можете просто перемещаться с одного экрана на другой.
import React, { Component } from 'react';
import {
StyleSheet,
Text,
View,
TouchableOpacity,
} from 'react-native';
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
class FirstScreen extends Component {
onGetStarted() {
const { navigate } = this.props.navigation;
navigate('SecondScreen');
}
render() {
return (
<View style={ styles.container }>
<TouchableOpacity
style={ styles.welcome }
onPress={ () => this.onGetStarted() }
>
<Text>
Welcome to React Native!
</Text>
</TouchableOpacity>
<Text style={ styles.instructions }>This is screen 1</Text>
</View>
);
}
}
export { FirstScreen };
Нет. Необходимо будет скомпилировать две версии: 64-разрядный и 32-разрядный.
Пока 64-разрядный DLL загружается отдельным 64-разрядным процессом, и вся коммуникация между 32-разрядным процессом и 64-разрядным DLL с помощью свободно связанных подобных IPC механизмов, что ОС может Маршалл, затем да можно сделать это.
Я сделал что-то подобное. Для 32-разрядного приложения было нужно пользовательское дополнение Спулера печати, реализованное в DLL. Приложение и дополнение спулера передаются с помощью механизмов IPC (необычный способ сказать временные файлы, в этом случае).
В 64-разрядных системах все о 32-разрядном приложении хорошо работало за исключением того, что Спулер печати отказался загружать дополнение DLL, потому что Спулер печати был, конечно, 64-разрядным процессом.
Решение было так же просто как восстановление только дополнения Спулера в 64-разрядном. Никакая потребность изменить все 32-разрядное приложение.
Нет, но Вы смогли обходить то использование COM. При выполнении dll в COM-объекте, который работает как автономный процесс, и общайтесь с marshallable интерфейсами (например: совместимые с автоматизацией интерфейсы), это должно работать. Не всегда выполнимо, в зависимости от того, что делает dll и как обширный интеграция и звонит, поверхности, но это - опция, которая должна смочь сделать тот сценарий возможным.