【问题标题】:How to change View Content On Click - React Native如何更改点击时查看内容 - React Native
【发布时间】:2022-11-30 14:49:31
【问题描述】:

我一直在尝试替换视图反应本机,但没有成功。每当我尝试 <TouchableOpacity onPress={() => {handleChangeMyView();}}> 时,应用程序都会无错误地关闭:

我究竟做错了什么?我怎样才能让它发挥作用?

谢谢大家。

import React, {
  useState
} from 'react';

import {
  SafeAreaView,
  View,
  TouchableOpacity,
} from 'react-native';

import MyInitialView from './MyInitialView';

const SiteContainer = () => {
  let MyDynamicView = () => {
    return (
      <View></View>
    );
  };

  const [MyDynamicViewArea, setMyDynamicViewArea] = useState(MyInitialView);

  const handleChangeMyView = () => {
    setMyDynamicViewArea(MyDynamicView);
  };

  return (
    <SafeAreaView style={styles.siteContainer}>
      {MyDynamicViewArea}
      <TouchableOpacity onPress={() => {handleChangeMyView();}}>
        <View>
          <FontAwesome name="quote-left"></FontAwesome>
        </View>
      </TouchableOpacity>
    </SafeAreaView>
  );
};

export default SiteContainer;

我的初始视图:

import React from 'react';

import {
  View
} from 'react-native';

export default function MyInitialView() {
  return (
    <View></View>
  );
}

【问题讨论】:

    标签: reactjs react-native react-hooks


    【解决方案1】:

    您可以使用布尔值使用 useState 查看 MyInitialView

      const [toViewMyInitialView, setToViewMyInitialView] = useState(false);
    

    并在 handleChangeMyView 函数中将上述值设置为 true

      const handleChangeMyView = () => {
        setToViewMyInitialView(true);
      };
    

    在 SiteContainer 中

    <SafeAreaView style={styles.siteContainer}>
          // here I don't know a way to display a component in react-native, so 
          // you need to display the component MyInitialView if the 
          // toViewMyInitialView is true and when toViewMyInitialView id false it 
          // display MyDynamicViewArea    
                                                                                                                                                
          {toViewMyInitialView && <MyInitialView/>}
           {!toViewMyInitialView && <MyDynamicViewArea/>}
          <TouchableOpacity onPress={() => {handleChangeMyView()}}>
            <View>
              <FontAwesome name="quote-left"></FontAwesome>
            </View>
          </TouchableOpacity>
        </SafeAreaView>
    

    【讨论】:

      猜你喜欢
      • 2021-11-24
      • 1970-01-01
      • 2022-11-30
      • 2021-10-13
      • 2015-08-24
      • 1970-01-01
      • 2021-12-01
      • 2020-02-19
      • 1970-01-01
      相关资源
      最近更新 更多