标签: react-native-ios

如何在React Native iOS中查看网络信息?

我需要在本机iOS中检查Internet连接

我会尝试以下代码:

NetInfo.isConnected.fetch().then(isConnected => {
   console.log(isConnected);
});
Run Code Online (Sandbox Code Playgroud)

在本机Android应用程序中可以正常工作,但它总是在本机iOS中返回'false'.

javascript react-native react-native-ios

7
推荐指数
1
解决办法
1万
查看次数

如果只有组件的一部分发生变化,React 是否会渲染整个组件?

我想知道如果我将大组件拆分成许多非常小的组件,我的代码是否会更高效,以便应用程序一次只渲染 DOM 的较小部分。

但是我觉得 React 可能已经只渲染了应用程序发生变化的部分,无论组件是大还是小。所以如果一个庞大组件的一小部分被改变,React 只会重新渲染组件的那一小部分,而不是整个组件。

我在第二段中的断言是否正确,或者我可以通过将一个大组件分成许多小组件来获得更好的性能吗?我在这个问题中包括 ReactJS 和 React Native。我认为它们在这方面是相同的,但如果它们不同,我想知道。

reactjs react-native react-native-android react-native-ios

7
推荐指数
1
解决办法
8289
查看次数

从本机代码调用 JavaScript 函数

我有一个 react-native 应用程序并希望将它与本机 SDK 集成。在某些时候,我需要调用 js 函数来返回数据,我应该从本机端进行这个调用。这是流程:

  1. 一些 iOS 处理程序需要更多信息
  2. native层调用js代码
  3. js 代码计算/获取所需数据
  4. js 代码将数据返回给本机代码
  5. 本机代码接收数据并继续工作

是否可以?有一个库,react-native-eval但可能有更优雅的方法来做到这一点?

ios react-native native-module react-native-ios

7
推荐指数
1
解决办法
2552
查看次数

JS 根视图从其父视图中删除后是否总是从本机接收事件?

我的(高度简化的)代码如下所示:

// objc
self.currentSwipeUpView = [[RCTRootView alloc]
   initWithBridge:_bridge moduleName:@"PhotoSwipeUpView"
   initialProperties:nil
];
// elsewhere...
[self.currentSwipeUpView removeFromSuperview];
self.currentSwipeUpView = nil;

// js
function PhotoSwipedUpView() {
    return <TextInput style={{flex: 1}} onChangeText={console.warn} />
}
AppRegistry.registerComponent('PhotoSwipeUpView', () => PhotoSwipeUpView)
Run Code Online (Sandbox Code Playgroud)

self.currentSwipeUpView从其父视图中删除并取消引用。发生这种情况时,JS 线程是否有可能收不到待处理的 onChangeText 事件?它会导致console.warn使用新文本吗?

我正在想象这样一种情况,在 RCTRootView 从其超级视图中删除并取消引用后,该事件将被发送到 JS 线程。

此外,我很好奇是否可以在从 JS 端从其父视图中删除 RCTRootView 时收到通知。

我正在使用 ARC 并且我没有持有任何其他对self.currentSwipeUpView.

编辑:我有两个 RCTRootViews。只有其中一个将被卸载,另一个将在应用程序的整个状态中持续存在。它们使用相同的桥接器,因此使用相同的包和 JS 环境。

react-native react-native-ios

7
推荐指数
1
解决办法
159
查看次数

反应本机应用程序 iPhone X 广泛升温

我有一个react-native应用程序,可以在大多数iPhone设备上完美运行,但最近在向大量用户推出它后,我开始收到很多抱怨,称iPhone X在使用react-native应用程序时会发热。

有没有人经历过同样的事情,我找不到这个问题的根本原因。

谢谢!

ios react-native react-native-ios iphone-x

7
推荐指数
0
解决办法
307
查看次数

React-Native 如何从平面列表中的项目处理 onPress ???

我的 FlatList 是无状态组件,当按下项目时,我想通过调用方法“handleOnPress”来处理 onPress。我该怎么做 ??以下是示例代码。
`

handleOnPress = () => {
  .....
}
<SampleListView
    data={prop.data}
    onPress={this.handleOnPress}
/>
const SampleListView = (props: Props) => {
  return (
    <FlatList
        style={styles.container}
        data={props.data}
        keyExtractor={item => item.id.toString()}
        renderItem={renderItem}
    />
    )
}
renderItem = ({ item }: { item: DataSample }) => {
  return (
  <TouchableWithoutFeedback onPress={ () => props.onPress}>
      ....
  </TouchableWithoutFeedback>
  )
}
Run Code Online (Sandbox Code Playgroud)

`

reactjs react-native react-native-ios react-native-flatlist

7
推荐指数
1
解决办法
2万
查看次数

无论如何,是否可以在后台为 Android 和 IOS 发送短信?

我想做一个应用程序,它的主要功能取决于发送短信。在我开发 android(native) 之前,但现在我使用 React-Native 为 IOS 和 Android 制作它。

在 android 中,如果您获得用户许可,则可以在后台发送短信。但是在通过网络搜索后,我找不到在 react-native 中做到这一点的方法。我读到苹果不允许应用程序这样做。我想知道是否可以在后台为 Android 和 IOS 发送短信。

我已经看过的库,打开手机短信界面(填充号码和短信正文),然后用户必须按下发送按钮(我想删除这一步。我的意思是应用程序自动发送短信)。

毕竟,有没有(库,...)可以在后台发送短信而无需打开 android 和 ios 的短信界面?

android ios react-native react-native-ios

7
推荐指数
1
解决办法
2034
查看次数

错误:无法从`index.js`解析模块`react`:在项目中找不到react

错误:无法reactindex.js以下位置解析模块:在项目中找不到反应。

当我尝试运行我的项目时,它会给我这个捆绑失败的错误。

在此处输入图片说明

这是我的 index.js 文件代码。

/**
 * @format
 */
import React,{Component} from 'react';
import {AppRegistry} from 'react-native';
import {name as appName} from './app.json';
import src from './Screens/Search'
import AppContainer from "./Component/MainNavigation";
class myApp extends Component {
    render(){
        return(
            <AppContainer />
        )
    }

}
AppRegistry.registerComponent(appName, () => myApp);
Run Code Online (Sandbox Code Playgroud)

package.json 文件。

{
  "name": "CharityDating",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "android": "react-native run-android",
    "ios": "react-native run-ios",
    "start": "react-native start",
    "test": "jest",
    "lint": "eslint ."
  },
  "dependencies": {
    "@ptomasroos/react-native-multi-slider": …
Run Code Online (Sandbox Code Playgroud)

react-native react-native-android react-native-ios

7
推荐指数
2
解决办法
7748
查看次数

“应该有一个队列。这很可能是 React 中的一个错误。请提出问题。” React-Native bug

我在当前正在开发的 React-Native 应用程序的标题中收到错误。

我已经进行了数小时的故障排除,但网上似乎没有解决方案。

根据我收集的信息,以下钩子const [isOpen, setIsOpen] = useState(false);导致了这里的问题,可能是由于钩子的顺序所致。该挂钩用于切换我自定义构建的菜单。但是,当我尝试导航到另一个屏幕<TouchableOpacity onPress={() => navigation.navigate('Job')}>(从屏幕堆栈,而不是从模式或卡片)时,应用程序崩溃并收到错误。如果我注释掉 hook 的一行钩子const [isOpen, setIsOpen] = useState(false);,导航就会完美地工作。

如果有解决方案,我们将不胜感激。

配置文件

export const sharedScreenOptions = (props) => {
  const [isOpen, setIsOpen] = useState(false);

  const toggleMenu = () => {
    setIsOpen(!isOpen);
    LayoutAnimation.easeInEaseOut();
  };
  return {
    headerBackTitleVisible: false,

    header: (props) => {
      return (
        <>
          <GradientHeader isOpen={isOpen} {...props} />
          {isOpen ? (
            <TouchableOpacity
              style={{
                height: Dimensions.get('window').height,
                width: Dimensions.get('window').width,
                backgroundColor: 'rgba(42, 44, 65, 0.5)',
                position: 'absolute',
                zIndex: -999, …
Run Code Online (Sandbox Code Playgroud)

javascript react-native react-native-ios react-native-navigation react-hooks

7
推荐指数
0
解决办法
5535
查看次数

异常“必须在主线程上进行调用”iOS

我正在开发一个通过 Firebase Cloud Messaging 获取推送通知的 React Native 项目。已经实现了 onNotification()、onNotificationOpened() 和 getInitialNotification() 的方法。虽然当应用程序在前台并强制关闭时通知正常工作,但当应用程序在后台(不是强制关闭)时打开通知时出现错误。错误图像如下。我尝试更改/注释通知代码,但错误仍然存​​在。我对 React Native 很陌生,不知道为什么会发生这个特殊问题。这方面的任何帮助都会非常有帮助。我已经更新了与 Firebase 和云消息传递相关的所有 pod。下面也是 react-native 代码。我没有在 Xcode 中做过任何编码,所以 Pod 文件是原样的。[在此处输入图片说明][1]

![1]: https://i.stack.imgur.com/Bg7Us.png

async createNotificationListeners() {
    this.notificationListener =  firebase.notifications().onNotification((notification) => {
        if (notification) {
            //const {title, body, data} = notification;
            //this.displayNotification(title, body, data);
        }
    });

    this.notificationOpenedListener = firebase.notifications().onNotificationOpened((notification)  =>  {
        const {data} = notification.notification;
        if (data.url !== undefined) {
            this.navigate2URL(data.url);
        }else {
            this.setState({url: 'test'});
            this.webRef.reload();

        }
        //this.displayNotification(title, body + data);
    });

   const notificationOpen = await  firebase.notifications().getInitialNotification();
    if …
Run Code Online (Sandbox Code Playgroud)

ios react-native firebase-cloud-messaging react-native-ios

7
推荐指数
1
解决办法
3761
查看次数