javascript - 映射时将 props 参数传递给 React.js 中的函数

标签 javascript reactjs

当我在组件渲染方法中通过 props 进行映射时,我可以将 prop 值传递给函数吗?我忘记了执行此操作的正确方法。例如,我有一个类别标签控件,它只列出一些带有名称的类别,但是在 onClick 上我想为单个类别执行一些功能。

var React = require("react");

var CategoryTags = React.createClass({

  propTypes: {
    categories: React.PropTypes.array.isRequired
  },

  render: function() {

      var categoryRows = this.props.categories.map(function (c, i) {

        return (
            <button onClick={ this.linkToCategory.bind(name) } >
              {c.name}
            </button>
        );

      }.bind(this));

    return (
        <span>{categoryRows}</span>
    );

  },

  linkToCategory: function (c) {
    console.log(c);
  }

});

因此,在此示例中,在映射类别时,我想传递单个类别的名称,以便可以解析链接。当然,对象具有链接属性是有意义的,但在本例中却没有。

传递到组件 props 的类别对象示例

类别 = [{'name': 'cat1'}, {'name': 'cat2'}];

最佳答案

.map 中绑定(bind)函数不是一个好主意,因为即使没有其他 prop 更改,您总是要将新函数传递给组件。这意味着它总是会被重新渲染,即使它不是必须的。

但无论如何,你的代码的问题是

  1. 没有变量名称
  2. 您错误地使用了 .bind

调用应该是

this.linkToCategory.bind(this, c.name)

传递给bind.bind的第一个参数是this的值,而不是第一个参数(你应该知道,因为你是也使用 .bind(this))。

您可以在 MDN documentation 中了解有关 .bind 的更多信息。 .

关于javascript - 映射时将 props 参数传递给 React.js 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30090079/

相关文章:

javascript - 使用 Rest 运算符获取解构错误?

javascript - 如果搜索字段包含 "pre-populated"值,则触发 jQuery 处理程序

javascript - Socket.IO - 中间件和范围 : how should I access global IO object from external middleware?

javascript - 文本输入的移动选择

javascript - 找不到模块 'react-native-foo-package' 的声明文件

javascript - 如何将 React.memo 应用于数组中的所有组件?

javascript - 异步 waterfall : Callback already was called?

javascript - 如何使用 CSS 制作基本形状?

javascript - 浏览器内的 javascript 无法同时识别 "import"和 JSX

reactjs - 带有动态子列的 Ant 设计表