javascript - 在 ReactJS 中,我如何将 "this"绑定(bind)到 map() 函数内的父组件

标签 javascript dictionary reactjs

给定以下 javascript,为了传递 updateSelectedPages从父 React 组件到 Image 的方法.map() 内部的组件函数,我首先必须将它分配给一个变量,然后在函数内部使用该变量。有什么方法可以绑定(bind) this在函数内部成为父 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);
});

最佳答案

Array.prototype.map 采用第二个参数设置回调函数的上下文。 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/map

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

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;
}, this).reduce(function(a, b) {
  return a.concat(b);
});

2 年后编辑: 现在你很可能在你的代码中使用箭头函数(如果只针对最新的浏览器,或者通过像 babel 这样的构建工具,通过 native 支持),除了更短的编写之外,它们还具有 this 的词法范围。哪个removes the need for binding或将第二个参数传递给 array.map()

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);
});

关于javascript - 在 ReactJS 中,我如何将 "this"绑定(bind)到 map() 函数内的父组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27024410/

相关文章:

python - 创建嵌套子字典 python

c++ - 计算一个词在 map 中出现的次数 - 使用 transform() - 调用不匹配

javascript - GatsbyJS 和 Contentful : data coming up undefined

javascript - 在静态方法中访问构造函数 var (es6)

javascript - 关于JavaScript函数的两个问题

javascript - 操纵代码授权问题——ReactJS

javascript - “数学”是嵌入对象中的未定义错误

c++ - 为不存在的 map 返回什么迭代器如何签名?

javascript - 如何在 onPress 函数中访问 React Native 标签或元素的属性?

reactjs - React-Redux:this.props.data.map不是函数错误