Javascript 从容器访问组件“this”
我使用道具传递组件需要运行的函数。尽可能使组件保持沉默。而不是将函数放入react类中 我需要更新我的组件状态,但从prop函数中访问setState时遇到问题。我尝试过这样做,以便我的函数可以访问它,但我不断遇到错误: 组成部分Javascript 从容器访问组件“this”,javascript,reactjs,Javascript,Reactjs,我使用道具传递组件需要运行的函数。尽可能使组件保持沉默。而不是将函数放入react类中 我需要更新我的组件状态,但从prop函数中访问setState时遇到问题。我尝试过这样做,以便我的函数可以访问它,但我不断遇到错误: 组成部分 componentDidMount(){ this.props.loadImage(this.props.src).bind(this); } 集装箱装载图像功能 let loadImage = (src)=>{ console.log('
componentDidMount(){
this.props.loadImage(this.props.src).bind(this);
}
集装箱装载图像功能
let loadImage = (src)=>{
console.log('loading Image');
fetch(src).then(function( data ) {
console.log('success');
that.setState({'imgUrl':src});
}).catch(function( error ) {
console.log('fail');
setTimeout(loadImage(src), 1000);
});
};
错误:
component.js:67 Uncaught TypeError: Cannot read property 'bind' of undefined(…)
谢谢 如果
loadImage
没有返回函数,那么您可能在未定义时调用了bind
。您可能需要执行this.props.loadImage.bind(this,this.props.src)代码>取而代之 如果loadImage
没有返回函数,那么您可能在未定义时调用了bind
。您可能需要执行this.props.loadImage.bind(this,this.props.src)代码>取而代之 首先为什么要绑定这个
类示例扩展了React.Component{
构造函数(){
超级();
此.state={
数据:“”
}
}
componentDidMount(){
这个。doSomething(“你好”);
}
剂量测量(数据){
这是我的国家({
数据
},()=>console.log(this.state));
}
render(){
返回(
{this.state.data}
);
}
}
ReactDOM.render(,document.getElementById('View'))代码>
首先为什么要绑定这个
类示例扩展了React.Component{
构造函数(){
超级();
此.state={
数据:“”
}
}
componentDidMount(){
这个。doSomething(“你好”);
}
剂量测量(数据){
这是我的国家({
数据
},()=>console.log(this.state));
}
render(){
返回(
{this.state.data}
);
}
}
ReactDOM.render(,document.getElementById('View'))代码>
如果看不到loadImage
及其返回的内容,很难判断。介意分享吗?@ZekeDroid认为它没有多大影响,但只是添加了它。因为现在你正在绑定该道具的返回值。这意味着,如果该道具没有返回语句(看起来是这样的),那么您将尝试绑定到未定义的
。如果看不到loadImage
及其返回的内容,很难判断。介意分享吗?@ZekeDroid认为它没有多大影响,但只是添加了它。因为现在你正在绑定该道具的返回值。这意味着,如果该prop没有返回语句(看起来是这样),那么您试图绑定到undefined
。也可以单独绑定和调用以显式设置参数:this.props.loadImage.bind(this.call)(undefined,this.props.src)
我相信bind
只会返回一个函数,对吗?这意味着loadImage
将不会被call
edahh调用,因为某种原因,我认为bind也调用了该函数,对于使用bind仍然是新手。将bind与call结合使用产生了伟大的思想。很高兴认识你。谢谢@Guavata和@mr Meeseeks也可以分别绑定和调用来显式设置参数:this.props.loadImage.bind(this.call)(未定义,this.props.src)
我相信bind
只会返回一个函数,对吗?这意味着loadImage
将不会被call
edahh调用,因为某种原因,我认为bind也调用了该函数,对于使用bind仍然是新手。将bind与call结合使用产生了伟大的思想。很高兴认识你。谢谢@Guavata和@Meeseeks先生至少据我所知,保持组件尽可能简单、专注于显示是最好的做法。将函数放入容器文件以处理功能和数据检索。这种做法有时需要添加一些额外的样板代码,但我觉得总的来说是值得的。至少从我的理解来看,保持组件尽可能简单、专注于显示是最好的做法。将函数放入容器文件以处理功能和数据检索。这种做法有时需要添加一些额外的样板代码,但我觉得总的来说是值得的。