Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在ReactJS中,我将如何绑定;这";映射到map()函数中的父组件_Javascript_Map_Reactjs - Fatal编程技术网

Javascript 在ReactJS中,我将如何绑定;这";映射到map()函数中的父组件

Javascript 在ReactJS中,我将如何绑定;这";映射到map()函数中的父组件,javascript,map,reactjs,Javascript,Map,Reactjs,给定以下javascript,为了将updateSelectedPages方法从父react组件传递到.map()函数内的Image组件,我首先必须将其分配给一个变量,然后在函数内使用该变量。有没有办法将函数中的这个绑定为父react组件,这样我就不必使用临时变量 var pageNumber = 0; var updateSelectedPages = this.updateSelectedPages; var images = this.props.resources.map(functio

给定以下javascript,为了将
updateSelectedPages
方法从父react组件传递到
.map()
函数内的
Image
组件,我首先必须将其分配给一个变量,然后在函数内使用该变量。有没有办法将函数中的
这个
绑定为父react组件,这样我就不必使用临时变量

var pageNumber = 0;
var updateSelectedPages = this.updateSelectedPages;
var images = this.props.resources.map(function(resource) {
  var arr = [];
  for(var x=0; x<resource.numPages; x++) {
    pageNumber++;
    arr.push(
      <Image src={'import/previewImage/' + resource.encodedName + '?page=' + pageNumber} number={pageNumber} updateSelectedPages={updateSelectedPages} key={pageNumber} />
    );
  }
  return arr;
}).reduce(function(a, b) {
  return a.concat(b);
});
var pageNumber=0;
var updateSelectedPages=this.updateSelectedPages;
var images=this.props.resources.map(函数(资源){
var-arr=[];

对于(var x=0;x您可以按如下方式绑定
this

var pageNumber = 0;
var images = this.props.resources.map(function(resource) {
  var arr = [];
  for(var x=0; x<resource.numPages; x++) {
    pageNumber++;
    arr.push(
      <Image src={'import/previewImage/' + resource.encodedName + '?page=' + pageNumber} number={pageNumber} updateSelectedPages={this.updateSelectedPages} key={pageNumber} />
    );
  }
  return arr;
}.bind(this)).reduce(function(a, b) {
  return a.concat(b);
});
var pageNumber=0;
var images=this.props.resources.map(函数(资源){
var-arr=[];

对于(var x=0;x您可以按如下方式绑定
this

var pageNumber = 0;
var images = this.props.resources.map(function(resource) {
  var arr = [];
  for(var x=0; x<resource.numPages; x++) {
    pageNumber++;
    arr.push(
      <Image src={'import/previewImage/' + resource.encodedName + '?page=' + pageNumber} number={pageNumber} updateSelectedPages={this.updateSelectedPages} key={pageNumber} />
    );
  }
  return arr;
}.bind(this)).reduce(function(a, b) {
  return a.concat(b);
});
var pageNumber=0;
var images=this.props.resources.map(函数(资源){
var-arr=[];

对于(var x=0;xArray.prototype.map),使用第二个参数设置回调函数的上下文。

所以,如果我正确理解了你的问题,下面的内容就足够了:)


Array.prototype.map获取设置回调函数上下文的第二个参数。

所以,如果我正确理解了你的问题,下面的内容就足够了:)


这很简单:)我没有意识到函数有bind()方法。谢谢!这很简单:)我没有意识到函数有bind()方法。谢谢!或者你可以声明一个顶级变量
self
,并将其设置为
this
并在函数中访问它:)@DhruvaSagar我不确定它是否能100%工作。请查看答案以找到更好的替代方案。或者您可以声明一个顶级变量
self
,并将其设置为
this
,然后在函数中访问它:)@DhruvaSagar我不确定它是否能100%起作用。看看答案,寻找更好的替代方案。这是一种比标记为正确的答案更好的方法,因为它避免了额外的函数调用,因此速度更快。这是一种比标记为正确的答案更好的方法,因为它避免了额外的函数调用函数调用,因此速度更快。
let pageNumber = 0;
const images = this.props.resources.map(resource => { // <-- using arrow function removes the need to worry about `this`
  const arr = [];
  for(let x = 0; x < resource.numPages; x++) {
    pageNumber++;
    arr.push(
      <Image
        src={`import/previewImage/${resource.encodedName}?page=${pageNumber}`}
        number={pageNumber}
        updateSelectedPages={this.updateSelectedPages}
        key={pageNumber}
      />
    );
  }
  return arr;
}).reduce(function(a, b) {
  return a.concat(b);
});