使用状态

时间:2016-08-13 09:53:42

标签: javascript react-native

我是新手,我刚开始玩状态和道具。 我一直在尝试获取一些数据,然后填充一些卡片视图 这是我的代码到目前为止的样子:

class Two extends React.Component {
constructor(props) { 
    super(props);
    this.state = { 
      day: "Monday",
    };
  }

// Getting monthly schedule
    getSchedules = () => {
        fetch("http://xxxxxx/getschedules.php", {method: "GET"})
        .then((response) => response.json())
        .then((responseData) => {
            AlertIOS.alert(
                "GET Response",
                "Search Query -> " + responseData.result.length)
                this.setState({day: responseData.result[1].day}); //changing state but nothing changes
        })
        .then((data) => { 
         console.log(data);
        })
        .catch(function(err) {
         console.log(err);
        })
        .done();
    }

  render() {  
            <TouchableOpacity onPress={this.getSchedules}>
              <View style={styles.card}>
              <Text>{this.state.day}</Text>
              </View>
              </TouchableOpacity>
             }
}

如果我点击卡片,文本值应该会改变,但没有任何反应。还有一种方法可以在页面加载时自动更改状态而无需单击卡片吗? 任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

在你的onPress代码中:<TouchableOpacity onPress={this.getSchedules}>

应为<TouchableOpacity onPress={this.getSchedules.bind(this)}>

仅传递函数引用this上下文不会传递给getSchedules。

答案 1 :(得分:0)

你检查过fetch是否正常工作?

我用Facebook示例网址尝试了你的代码,我得到了

  

网络请求失败

控制台中的

CMD + D - 调试)

按照this SO answer中的说明将域添加到info.plist中的例外列表中并且有效:)

info.plist文件位于Xcode中,您可以通过右键单击并选择“打开为&gt;源代码”来更新它 - 这样您就可以复制并粘贴上述SO答案中的代码