如何在 React Native 中按下按钮时更改文本值?

Posted

技术标签:

【中文标题】如何在 React Native 中按下按钮时更改文本值?【英文标题】:How to change text Value upon Button press in React Native? 【发布时间】:2017-12-15 22:20:51 【问题描述】:

我是一名 ios 开发人员,目前正在开发一个实验性的 React Native 应用程序。

我有以下代码,它在屏幕上显示一个按钮和示例文本。

import React from 'react';
import  StyleSheet, Text, View , Button  from 'react-native';

export default class App extends React.Component 
  constructor() 
    super();
    this.state = sampleText: 'Initial Text';
  

  changeTextValue = () => 
    this.setState(sampleText: 'Changed Text');
  

  _onPressButton() 
    <Text onPress = this.changeTextValue>
      this.state.sampleText
    </Text>
  

  render() 
    return (
      <View style=styles.container>
        <Text onPress = this.changeTextValue>
          this.state.sampleText
        </Text>

        <View style=styles.buttonContainer>
          <Button
            onPress=this._onPressButton
            title="Change Text!"
            color="#00ced1"
          />
        </View>
      </View>
    );
  


const styles = StyleSheet.create(
  container: 
    flex: 1,
    backgroundColor: '#f5deb3',
    alignItems: 'center',
    justifyContent: 'center',
  ,
  buttonContainer: 
);

上面的代码显示文本和一个按钮。

但是,当我单击按钮时,应用程序崩溃,而不是显示要显示的新文本。

我是 React Native 新手,请指导我如何解决错误。

【问题讨论】:

【参考方案1】:
import React,  useState  from "react";
import  View, Text  from "react-native";

const App = () => 
  const [value, setValue] = useState("Mohd Sher Khan");

  const hellod = () => 
    setValue("value changed");
    
  ;

  return (
    <View>
      <Text onPress=hellod>value</Text>
    </View>
  );
;

export default App;

【讨论】:

【参考方案2】:

带钩子:

import React, useState from "react";
import Button, Text, View from "react-native";

const App = () => 
  const [text, setText] = useState("Initial text");

  const onPressHandler = event => setText("Changed text");

  return (
    <View>
      <Text>text</Text>
      <Button title="Change Text" onPress=onPressHandler />
    </View>
  );
;

【讨论】:

【参考方案3】:

在状态方法中设置我的文本,然后在按下的按钮中更新状态,然后在文本中设置如下:

<Text>
    this.state.myText
</Text>

【讨论】:

【参考方案4】:

您可以使用状态来保留您的默认文本,然后按下我们更新状态。

import React,  Component  from 'react'
import  View, Text, Button  from 'react-native'

export default class App extends Component 
  state = 
    textValue: 'Change me'
  

  onPress = () => 
    this.setState(
      textValue: 'THE NEW TEXT GOES HERE'
    )
  

  render() 
    return (
      <View style=paddingTop: 25>
        <Text>this.state.textValue</Text>
        <Button title="Change Text" onPress=this.onPress />
      </View>
    )
  

【讨论】:

【参考方案5】:

您可以使用状态来动态更改文本

import React, Component from 'react';
import Text, Button, View from 'react-native';

export default class App extends Component
constructor()
    super();
    this.state = 
    textValue: 'Temporary text'
    
    this.onPressButton= this.onPressButton.bind(this);


onPressButton() 
    this.setState(
        textValue: 'Text has been changed'
    )


render()
    return(

<View style=paddingTop: 20>
  <Text style=color: 'red',fontSize:20> this.state.textValue </Text>
  <Button title= 'Change Text' onPress= this.onPressButton/>
</View>

   );
 

【讨论】:

【参考方案6】:

这是因为你的 onPress 函数有点奇怪,你想在按下时调用一个动作,而不是 jsx 元素。您的 changeTextValue 应该传递到您的按钮的 onPress 中。

【讨论】:

*你的 changeTextValue。不是你。【参考方案7】:

您可以使用此方法在单击按钮时更新值

class App extends React.Component 
   constructor() 
     super();
     this.state =  val: 0 
     this.update = this.update.bind(this)
   
   update() 
     this.setState( val: this.state.val + 1 )
   
   render() 
     console.log('render');
     return <button onClick=this.update>this.state.val</button>
   

【讨论】:

【参考方案8】:

您最好确定 _onPressButton() 正在做什么。你可以在这个函数中简单地setState(),什么都不做,可以帮你解决问题。如果你想渲染一些新的东西,你必须添加 return() 并包裹 Text。

【讨论】:

以上是关于如何在 React Native 中按下按钮时更改文本值?的主要内容,如果未能解决你的问题,请参考以下文章

在 React-native 中按下按钮后双触发

在 React Native 中按下回车时如何禁用在多行 TextInput 中插入新行

react-native-maps:如何在按钮按下时跟随用户位置

在 SwiftUI 中按下按钮时更改字符串的文本

如何在 React Native 中选择一个按钮,而不选择其他按钮?

React Native:如何更改 onPress 事件的视图