我的React代码中有一个函数,如下所示:
getAttachment(url) {
fetch(url).then((responseText) => {
var response = responseText.json();
response.then(function(response){
this.setState({ attachment: response });
});
}.bind(this));
}
但是当我编译时我收到一个错误,说我在.bind(this)
有一个意外的令牌。任何想法,如何在承诺中设置状态?
答案 0 :(得分:6)
您可以将引用范围限定为this
,而不是绑定var that = this;
。像
that.setState
然后引用Map<String, String> i18Map = new HashMap<>();
map.put("open", "open"); // English
map.put("abierto", "open"); // Spanish
map.put("ouvrir", "open"); // French
// other words/languages
。
答案 1 :(得分:3)
这是因为你在函数内部有不同的范围。使用函数时,它具有自己的范围。并且&#34;这个&#34;在函数内部使用它时,函数使用不一样。这样做的最好方法是使用变量&#34;&#34;并指定前一个&#34;这个&#34;到&#34;那&#34;。
class Hello extends React.Component {
constructor(props) {
super(props);
this.getAttachment = this.getAttachment.bind(this);
this.state = {attachmenet: ""};
}
getAttachment(url) {
//Code you need to add
var that = this;
fetch(url).then((responseText) => {
var response = responseText.json();
response.then(function(response){
//code you need to change
that.setState({ attachment: response });
});
});
}
render() {
this.getAttachment();
return <div dangerouslySetInnerHTML={{__html:this.state.attachment}}>
</div>;
}
}
答案 2 :(得分:1)
尝试将getAttachment
功能更改为
getAttachment = (url) => {...}
并删除.bind(this)