按下 customButton 时 React-Native 没有任何反应,但是当我按下 return 时它可以工作

标签 react-native

按下 RoundButton 组件时没有任何 react ,但是当我按下回车键时,它可以工作,
这是我的自定义按钮组件
自定义按钮 :

import React from 'react';
import { Text, View, StyleSheet, TouchableOpacity, } from 'react-native';

export const RoundedButton = ({
  style = {},
  textStyle = {},
  size = 125,
  ...props
}) => {
  return( <TouchableOpacity style={[styles(size).radius,style]}>
  <Text style={[styles(size).text,textStyle]}>{props.title} </Text>
  </TouchableOpacity>);
};
从组件调用 :
import React, {useState} from 'react';
import { Text, View, StyleSheet,TouchableHighlight } from 'react-native';
import {TextInput} from "react-native-paper";
import {RoundedButton} from '../../components/RoundedButton'

export const Focus = ({addSubject}) => {
  const [focusSubject, setFocusSubject] = useState(null);
  const [tempItem, setTempItem] = useState(null);
  return (
    <View style={styles.container}>
    <View style={styles.titleContainer}>
    <Text>Want something?</Text>
    <View  styles={styles.inputContainer} >
    <TextInput onSubmitEditing={({ nativeEvent }) => {
      setTempItem(nativeEvent.text);
addSubject(nativeEvent.text)
    }} />
    <RoundedButton size={100} title="+" onPress={()=> {addSubject(tempItem)}} />
    </View>
    </View>
    </View>
  );
}

最佳答案

您需要在 TouchableOpacity 上调用 onPress
自定义按钮 :

import React from 'react';
import { Text, View, StyleSheet, TouchableOpacity, } from 'react-native';

export const RoundedButton = ({
  style = {},
  textStyle = {},
  size = 125,
  ...props
}) => {
  return( 
  <TouchableOpacity onPress={props.onButtonHandler} style={[styles(size).radius,style]}>
  <Text style={[styles(size).text,textStyle]}>{props.title} </Text>
  </TouchableOpacity>
)};

在您的组件中传递 onButtonHandler
从组件调用 :
import React, {useState} from 'react';
import { Text, View, StyleSheet,TouchableHighlight } from 'react-native';
import {TextInput} from "react-native-paper";
import {RoundedButton} from '../../components/RoundedButton'

export const Focus = ({addSubject}) => {
  const [focusSubject, setFocusSubject] = useState(null);
  const [tempItem, setTempItem] = useState(null);
  return (
    <View style={styles.container}>
    <View style={styles.titleContainer}>
    <Text>Want something?</Text>
    <View  styles={styles.inputContainer} >
    <TextInput onSubmitEditing={({ nativeEvent }) => {
      setTempItem(nativeEvent.text);
addSubject(nativeEvent.text)
    }} />
    <RoundedButton size={100} title="+" onButtonHandler={()=> {addSubject(tempItem)}} />
    </View>
    </View>
    </View>
  );
}

关于按下 customButton 时 React-Native 没有任何反应,但是当我按下 return 时它可以工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68342901/

相关文章:

react-native - 如何正确地将 native 手势处理程序可触摸内容与 native 可触摸内容混合使用?

react-native - 如何在react-native-document-picker中仅选择mp3文件?

javascript - 如何从 AsyncStorage 获取多个键,然后将这些键添加到数组中?

ios - 通过 https 的 React-native 加载图像有效,而 http 无效

react-native - 方法或属性 expo-file-system.downloadAsync 在 android 上不可用,您确定您已正确链接所有 native 依赖项吗?

javascript - 使用 enzyme 测试 React Native FlatList

android - 仅使用横向模式为 iPad 和平板电脑制作 React native 应用程序的正确方法

android - React Native 在 android 上获得正确的状态栏高度

android - React Native Expo Android WebView

javascript - React Native Drawer Navigation 总是自动关闭