我还在学习ReactJS。我正在挑战自己写一个非常基本的待办事项应用程序(就像一个人一样),我有一个问题,调用onhtml函数。
var List = React.createClass({
handleClick: function () {
alert("Clicked!");
},
render: function () {
var list = this.props.items;
var items = list.map(function(item){
return (
<li style={{borderBottom:'1px solid red'}}>
<label onClick={this.handleClick}>
<input type="checkbox" />
{item}
</label>
</li>
);
});
return (
<ul>{items}</ul>
)
}
});
这里的问题是不能调用onClick={this.handleClick}
,因为它不在render函数的返回调用中
要从map函数内部访问handleClick,我需要做什么?
您应该将this
显式绑定到handleClick
函数,以引用React组件而不是map函数,因此您可以按如下方式重构代码:
var items = list.map(renderListItem.bind(this));
并在React类中添加renderListItem
方法,如下所示:
renderListItem(item) {
return (
<li style={{borderBottom:'1px solid red'}}>
<label onClick={this.handleClick}>
<input type="checkbox" />
{item}
</label>
</li>
);
}
您遇到的问题是,对list.map
的调用将使用与render
方法不同的this
调用传递的函数。
一个简单的解决方法是在外部作用域中抓取此并将其存储在变量中,然后在内联函数中使用该变量。
render: function () {
var self = this;
// ^^^^^^^^^^^^^^^^
var list = this.props.items;
var items = list.map(function(item){
return (
<li style={{borderBottom:'1px solid red'}}>
<label onClick={self.handleClick}>
// ^^^^
<input type="checkbox" />
{item}
</label>
</li>
);
});
return (
<ul>{items}</ul>
)
}
map
函数的第二个参数是一个值,用于在执行回调时定义此
的范围。.map(回调(当前值、索引、数组)、此/范围的值\u到\u运行\u)
因此,您可以按如下方式修改map
函数:
var items = list.map(function(item){
return (
<li style={{borderBottom:'1px solid red'}}>
<label onClick={this.handleClick}>
<input type="checkbox" />
{item}
</label>
</li>
);
}, this);
您还可以使用一个箭头函数,其中this
被隐式绑定:
var items = list.map((item) => {
return (
<li style={{borderBottom:'1px solid red'}}>
<label onClick={this.handleClick}>
<input type="checkbox" />
{item}
</label>
</li>
);
});
我从一个xml模式生成java类,对于一个复杂类型,我希望jaxb使用一个现有的类,我有一个外部绑定定制文件。自定义类被解组为正确的,除了该类型的单个属性,该属性从未在java类中填充。 下面是类型/类问题的演示。 模式中定义的内容是: 读取匹配xml文件的代码段是: 在这个xml中阅读: 使用JAXB生成的Thing类(不使用自定义xjb),输出符合预期: 使用只有getters的自定义Thin
我正在使用用于Python的VSCode以及VSCode中启用的适用于Python的微软扩展。 对于Python v3.9.0,如果我尝试寻找函数定义,则会发现找不到定义。 但是,如果我将Conda Virtual环境用于Python 3.7.0,我不会收到错误消息。 可能是什么问题?
问题内容: 我是一个非常新的反应者,我正在尝试从Rails api导入数据,但出现错误 如果我使用react dev工具,则可以在控制台中看到状态,也可以看到联系人,方法是使用有人可以帮忙解决我做错的事情吗?我的组件看起来像这样: 问题答案: 无法读取未定义的属性“ map”,为什么? 因为最初是,并且of 将是 不确定的 。重要的一点是, componentDidMount 将在初始渲染后被调用
问题内容: 我正在使用Reactjs,编写一个菜单组件。 每当我在map函数内部使用“ this”时,它都是未定义的,但在外部,则没有问题。 错误: “无法读取未定义的属性’props’” 有人帮我!:(( 问题答案: 需要第二个参数来设置在映射函数中引用的内容,因此将其作为第二个参数传递以保留当前上下文: 另外,您可以使用ES6 箭头功能自动保留当前上下文:
我正在使用mapstruct从一个DTO映射到另一个DTO。我有多个默认方法,但其中2个返回值为String,并且使用相同的类作为输入参数,这给我带来了“使用java MapStruct的模糊映射方法”错误。 错误:(16,7)Java:在将属性“java.lang.String StatusHistory”映射到java.util.Map:java.util.Map toMap(java.lan
客户服务实施 客户服务界面 客户映射器 主类 错误- 应用程序启动失败 说明: com中的字段映射器。应用服务实施。CustomerServiceImpl需要“com”类型的bean。应用映射器。找不到CustomerMapper“”。 措施: 考虑定义“com”类型的bean。应用映射器。配置中的CustomerMapper。