React Native 上开发 VisionOS App 初步尝试

React Native 上开发 VisionOs 应用,首先需要准备:

  • 建议 m2 Pro 以上 芯片的 Mac Pro

  • 安装 Xcode 15.2,以及iOS 模拟器,和 VisionOs 模拟器

  • 本机安装 cmake,直接 brew install cmake 即可

然后,就是初始化一个项目非常简单,直接执行如下命令。

java 复制代码
 npx @callstack/react-native-visionos@latest init app_name 

随后,巴拉巴拉一大堆的依赖的安装:

随后就是为 visionos 目录做依稀代码注入了:

bash 复制代码
cd visionos
bundle install
bundle exec pod install

安装成功之后,就可以跑起来了,首先你的执行 yarn start

bash 复制代码
yarn start # 这个不要忽略,这是 yarn visionos 执行起来的基础
yarn visionos

我们修改一下 App.tsx,比如修改下 step one他们的文案 ,然后保存看看。可以看到直接保存,就更新了,这说明热更新还是好使的。

整一个 hack News 看看

以下是修改后的 App.tsx 的代码

ini 复制代码
import React, { useEffect, useState } from 'react';
import { FlatList, Text, View, StyleSheet, Platform } from 'react-native';

const App = () => {
  const [stories, setStories] = useState([]);

  useEffect(() => {
    const fetchStories = async () => {
      const result = await fetch('https://hacker-news.firebaseio.com/v0/topstories.json');
      const ids = await result.json();
      const top10Ids = ids.slice(0, 10);

      const storyPromises = top10Ids.map(id => fetch(`https://hacker-news.firebaseio.com/v0/item/${id}.json`).then(res => res.json()));
      const stories = await Promise.all(storyPromises);

      setStories(stories);
    };

    fetchStories();
  }, []);

  return (
    <View style={styles.container}>
      <Text style={styles.title}>Top 10 Hacker News Stories</Text>
      <FlatList
        data={stories}
        keyExtractor={(item) => item.id.toString()}
        renderItem={({ item }) => (
          <View style={styles.item}>
            <Text style={styles.storyTitle}>{item.title}</Text>
            <Text style={styles.storyAuthor}>By: {item.by}</Text>
          </View>
        )}
      />
    </View>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    padding: 20,
    backgroundColor: '#F5F5F5',
  },
  title: {
    fontSize: 24,
    fontWeight: 'bold',
    marginBottom: 20,
  },
  item: {
    backgroundColor: '#FFFFFF',
    padding: 20,
    marginBottom: 10,
    borderRadius: 5,
    ...Platform.select({
      ios: {
        shadowColor: '#000',
        shadowOffset: { width: 0, height: 2 },
        shadowOpacity: 0.3,
        shadowRadius: 2,
      },
      android: {
        elevation: 5,
      },
    }),
  },
  storyTitle: {
    fontSize: 18,
    marginBottom: 5,
  },
  storyAuthor: {
    fontSize: 14,
    color: 'gray',
  },
});

export default App;

可以看看跑起来的效果

整个过程走下来,可以总结下:

  1. react native 是支持 visionos 开发的,而且新启动一个项目非常简单,几乎傻瓜式的。

  2. react native 还是可以热更新的,这对于提升编码效率非常有帮助。

  3. 更具文档看,react native 还提供了已有项目迁移到visionos 版本的支持 ,https://callstack.github.io/react-native-visionos-docs/docs/guides/integrate-into-existing-projects

  4. react native 更是支持immersive-space https://callstack.github.io/react-native-visionos-docs/docs/guides/immersive-spaces ,虽然我尝试了下,没有成功,但是原生应用是 ok 的,这里可能还是有一些配置上的问题,在 react native 中写 swift 文件需要做关联,那么最简单的方法可能是在 xcode 中去添加 swift 文件,这样工程会自动配置引用,然后在回到 vscode 中来做引用。

探索代码的无限可能,与老码小张一起开启技术之旅。点关注,未来已来,每一步深入都不孤单。

相关推荐
xiaofeichaichai4 小时前
Webpack
前端·webpack·node.js
问心无愧05134 小时前
ctf show web入门111
android·前端·笔记
唐某人丶4 小时前
模型越来越强,我们还需要 Agent 工程吗?—— 从价值重估到 Harness 实践
前端·agent·ai编程
智码看视界4 小时前
现代Web开发基础:全栈工程师的起航点
前端·后端·c5全栈
JS菌5 小时前
手写一个 AI Agent 全栈项目:从沙箱执行到子智能体的完整实现
前端·人工智能·后端
excel6 小时前
HLS TS 文件损坏的元凶:Git 提交与拉取
前端
Aphasia3116 小时前
https连接传输流程
前端·面试
徐小夕6 小时前
万字长文!千万级文档 RAG 知识库系统落地实践
前端·算法·github
threelab6 小时前
Three.js 物理模拟着色器 | 三维可视化 / AI 提示词
开发语言·前端·javascript·人工智能·3d·着色器