除了视图,如何在其他函数中使用api响应数据?

时间:2019-01-28 20:44:27

标签: reactjs react-native react-native-android

我已使用react-native提取从REST API获取数据。其显示效果很好。现在,我需要使用按钮的响应onPress函数。 响应

.then((responseJson) => {
    this.setState({
      data: responseJson,
    })
  })

我得到的价值是

{
"id": 2,
"foo": "bar"
}

在View with中运行正常

<Text>{this.state.data.answer}</Text>

我需要

_onPressButtonA() {
    alert("bar");
  }

我的按钮代码是

<TouchableOpacity onPress={this._onPressButtonA}>
  <Text>{this.state.data.option1}</Text>
</TouchableOpacity>

完整代码

class QuestionScreen extends React.Component {
state = {
data: '',
}
componentDidMount() {
return fetch('http://example.com/api', {
method: 'POST',
  headers: {
    Accept: 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    param: 'foo',
  }),
}).then((response) => response.json())
  .then((responseJson) => {
      this.setState({
      data: responseJson,
    })
  })
  .catch((error) => {
    console.error(error);
  });
}
_onPressButtonA() {
//Needed to be displayed here
}
render() {
return (
  <View style={{ flex: 1, paddingTop: 20 }}>

    <View style={{ margin: 15 }}>

      <View style={{ margin: 5 }} />
      <TouchableOpacity onPress={this._onPressButtonA}>
        <Text>{this.state.data.answer}</Text>
      </TouchableOpacity>
  </View>
);
}
}

1 个答案:

答案 0 :(得分:1)

根据我的评论,您应该使用箭头功能,以便可以通过此功能访问状态

@Test
public void testRegex() throws Exception {
    MutableDocument doc1 = new MutableDocument("doc1");
    doc1.setValue("version", "v_1.7.7_1_3");
    db.save(doc1);

    MutableDocument doc2 = new MutableDocument("doc2");
    doc2.setValue("version", "v_1.7.5_1_3");
    db.save(doc2);

    MutableDocument doc3 = new MutableDocument("doc3");
    doc3.setValue("version", "v_4.7.1_2_8");
    db.save(doc3);

    MutableDocument doc4 = new MutableDocument("doc4");
    doc4.setValue("version", "v_4.7.1_1_8");
    db.save(doc4);

    MutableDocument doc5 = new MutableDocument("doc5");
    doc5.setValue("version", "v_4.7.2_2_8");
    db.save(doc5);

    MutableDocument doc6 = new MutableDocument("doc6");
    doc6.setValue("version", "v_4.6.2_2_8");
    db.save(doc6);

    Query q = QueryBuilder
            .select(SelectResult.property("version"))
            .from(DataSource.database(db))
            .where(Expression.property("version").regex(Expression.string("^v" + "_" + "(4.6.2|1.7.7)" + "_" + "[123]" + "_" + "[12345678]")));

    List<Result> results = q.execute().allResults();
    // since the doc1 and doc6 passes the regex. 
    assertEquals(results.size(), 2);
}

或者您可以在构造函数中手动绑定

_onPressButtonA = () => {
//Needed to be displayed here
}