【发布时间】:2017-12-03 15:41:21
【问题描述】:
如标题中所述,我收到了错误消息 期望 onClick 监听器是一个函数,而不是类型对象
但我无法理解为什么这不起作用。 据我所知,onClick 监听器是一个函数。
这是错误来自的 CharacterList 组件
import React,{Component} from 'react';
import {connect} from 'react-redux';
import {addCharacterById} from '../actions';
import {bindActionCreators} from 'redux';
class CharacterList extends Component{
render(){
//console.log('name : ',this.props.characters[2].name);
return(
<div>
<h3>Characters</h3>
<ul>
{this.props.characters.map((character)=>{
return(<li key={character.id}>{character.name}
<div
onClick={this.props.addCharacterById(character.id)}
>+</div>
</li>);
})}
</ul>
</div>
)
}
}
function mapStateToProps(state){
return {
characters:state
}
}
export default connect(mapStateToProps,{addCharacterById})(CharacterList);
这里是动作创建者
export const ADD_CHARACTER='ADD_CHARACTER';
export function addCharacterById(id){
var action ={
type:ADD_CHARACTER,
id
}
return action;
}
那么,你们觉得呢? 这里有什么问题?
【问题讨论】:
-
"据我所知,onClick 监听器是一个函数。"您确定吗?
console.log是一个函数。console.log("Hello")是函数吗? -
你在哪里看到console.log("hello")??
-
这是一个类比。
this.props.addCharacterById是一个函数。this.props.addCharacterById(character.id)是函数吗? -
函数调用不是函数。函数调用返回一个值。您没有将函数作为
onClick属性传递。您正在传递函数返回的值。 -
嗯,是的。也阅读其他答案,说同样的话。我想我现在明白了。
标签: javascript reactjs redux react-redux