如何使用 React Native 在控制台中打印状态?

Posted

技术标签:

【中文标题】如何使用 React Native 在控制台中打印状态?【英文标题】:How can I print state in the console with React Native? 【发布时间】:2018-07-08 02:27:41 【问题描述】:

我正在尝试在控制台中打印状态以进行调试,但我收到以下错误消息:

无法读取未定义的属性“宠物名”

在控制台中打印状态的正确方法是什么?为什么将其称为属性?

export default class App extends Component<> 
  constructor(props) 
    super(props)

    this.state = 
      petname: '',
      owner: ''
    ;
  

  addPet() 
    console.log("Button Pressed");
    console.log(this.state.petname);
    return (
      //some logic
    );
  

  render() 
    return (
      <View style=styles.container>
        <View style=styles.inputStyle>
          <Text>Pet</Text>
          <TextInput onChangeText=petname =>                                 this.setState(petname) style=width:100 />
        </View>
        <View style=styles.inputStyle >
          <Button title="Add Pet" onPress=this.addPet />
        </View>
      </View>
    )
  

【问题讨论】:

【参考方案1】:

this 在您的函数中无法访问。您可以将thisonPress 上的函数绑定,也可以在构造函数中编写以下内容。

this.addPet = this.addPet.bind(this);

比较第一个和第二个选项,第二个选项更好,因为它不会每次都创建一个新实例。

最好的选择是使用箭头功能(ES6 功能)。请考虑以下示例。

addPet = () => 
  // Your awesome logic goes here

【讨论】:

工作但我有更多疑问为什么要绑定 addPet 函数?这背后的动机是什么? 绑定 this 是 ES5 解决方案,现在我们有箭头函数 (ES6)。你可以阅读讨论here about this topic【参考方案2】:

这段代码应该可以工作:

<Button title="Add Pet" onPress=this.addPet.bind(this) />

【讨论】:

【参考方案3】:

把函数改写成这样:

addPet = () => 
    console.log("Button Pressed");
    console.log(this.state.petname);
    return (
        // Some logic
    );

【讨论】:

以上是关于如何使用 React Native 在控制台中打印状态?的主要内容,如果未能解决你的问题,请参考以下文章

如何等待 react native Image Picker 回调函数响应?

如何使用控制台在 React Native Android 中调试 Java 代码

如何通过 React Native 将打印作业发送到打印机

React Native 中的蓝牙打印

如何在 Detox 中控制 React-Native webview?

如何使用 Yarn 创建 React Native 项目?