我是新手,我刚开始玩状态和道具。 我一直在尝试获取一些数据,然后填充一些卡片视图 这是我的代码到目前为止的样子:
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>
}
}
如果我点击卡片,文本值应该会改变,但没有任何反应。还有一种方法可以在页面加载时自动更改状态而无需单击卡片吗? 任何帮助将不胜感激!
答案 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答案中的代码