前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >React Native 上开发 VisionOS App 初步尝试

React Native 上开发 VisionOS App 初步尝试

原创
作者头像
brzhang
发布2024-03-05 14:12:48
1940
发布2024-03-05 14:12:48
举报
文章被收录于专栏:玩转全栈玩转全栈

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

  • 建议 m2 Pro 以上 芯片的 Mac Pro
  • 安装 Xcode 15.2,以及iOS 模拟器,和 VisionOs 模拟器
  • 本机安装 cmake,直接 brew install cmake 即可

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

代码语言:javascript
复制
 npx @callstack/react-native-visionos@latest init app_name 

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

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

代码语言:javascript
复制
cd visionos
bundle install
bundle exec pod install

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

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

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

整一个 hack News 看看

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

代码语言:javascript
复制
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 中来写js代码。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 整一个 hack News 看看
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档