Я новичок в разработке React Native, знаю iOS. Просто хочу знать о нескольких моментах:
Я погуглил и получил примеры, которые указывают на то, что второй вариант вполне возможен, и Instagram сделал это на экране редактирования профиля.
Но я не могу найти примеров, где это приложение React Native, а мы вводим код Swift или Objective-C между ними.
Пожалуйста, если кто-нибудь знает какие-либо ссылки или примеры, доступные для случая 1, сообщите мне об этом.
2-й вопрос:





Да. Вы можете сделать и то, и другое
1.
https://facebook.github.io/react-native/docs/platform-specific-code.html
2.
https://codeburst.io/integrate-react-native-into-an-existing-app-ios-87c947a16044https://facebook.github.io/react-native/docs/integration-with-existing-apps.html
Я понял это. что вы думаете о втором вопросе?
@SudhanshuGupta Думаю, это будет сложно. React Native хорош, если использовать его с нуля.
@SudhanshuGupta Я еще не "интегрировал React Native с iOS". Так что насчет потока я не уверен. Но я уверен, что это будет сложно.
@SudhanshuGupta Вы можете создать мост facebook.github.io/react-native/docs/native-modules-ios.html
@anhtu Спасибо, я могу создавать функции в объекте c и вызывать их из javascript.
Можем ли мы добавить код iOS (быстрый или целевой C) в приложение React Native?
Да, мне удалось это сделать: -
MyObjcClass.h
#import <Foundation/Foundation.h>
#import <React/RCTBridgeModule.h>
@interface MyObjcClass : NSObject <RCTBridgeModule>
@end
MyObjcClass.m
#import "MyObjcClass.h"
@implementation MyObjcClass
// tells react bridge to bridge our created class
RCT_EXPORT_MODULE()
- (NSDictionary *)constantsToExport {
return @{@"CreatedBy": @"Type any number and get Square"};
}
RCT_EXPORT_METHOD(squareNumber:(int)number getCallback:(RCTResponseSenderBlock)callback) {
callback(@[[NSNull null], [NSNumber numberWithInt:(number*number)]]);
}
Теперь мы можем вызывать эти методы в JS. Ниже я покажу, как вызвать цель c в React.
App.js
import React from 'react';
import { StyleSheet, Text, View, TextInput, Button } from 'react-native';
// to import native code
import {NativeModules} from 'react-native';
var MyObjcClass = NativeModules.MyObjcClass;
export default class App extends React.Component {
state = {
number:0
};
squareMe(num) {
if (num == '') {
return;
}
MyObjcClass.squareNumber(parseInt(num), (error, number) => {
if (error) {
console.error(error);
} else {
this.setState({number: number});
}
})
}
render() {
return (
<View style = {styles.container}>
<Text style = {styles.spaceBetween}>Objective C inclusion</Text>
<TextInput placeholder = "type a number ...." style = {styles.input} onChangeText = {(text) => this.squareMe(text)}/>
<ListItem placeName = {this.state.number}></ListItem>
</View>
);
}
}
да, мы можем сделать
import {Platform} from 'react-native';
const majorVersionIOS = parseInt(Platform.Version, 10);
if (majorVersionIOS <= 9) {
console.info('Work around a change in behavior');
}
Активное чтение: Документация по родным модулям и Интеграция с документацией существующих приложений.