Javascript 如何将DispatchToProps方法映射到嵌套react类的onClick属性?
我有一个react类“Property”,它在redux状态下有一些名称和值。一个“属性”的值可以是另一个具有名称和值的“属性”。这取决于用户希望嵌套的级别。所以我从同一个“Property”类调用了“Property”类。并已将其中一个propertyKey的OnClick属性映射到mapDispatchToProps方法以进行某些处理Javascript 如何将DispatchToProps方法映射到嵌套react类的onClick属性?,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,我有一个react类“Property”,它在redux状态下有一些名称和值。一个“属性”的值可以是另一个具有名称和值的“属性”。这取决于用户希望嵌套的级别。所以我从同一个“Property”类调用了“Property”类。并已将其中一个propertyKey的OnClick属性映射到mapDispatchToProps方法以进行某些处理 const mapDispatchToProps = dispatch =>{ return{ onPropertyClicked : (pro
const mapDispatchToProps = dispatch =>{
return{
onPropertyClicked : (propertyKey)=> dispatch({type: 'ChangeSelectedObject', propertyKey:propertyKey})
}};
这是OnClick语句:
<span onClick = {()=>this.props.onPropertyClicked(this.props.propertyKey)}>{this.props.propertyKey}</span>
this.props.onPropertyClicked(this.props.propertyKey)}>{this.props.propertyKey}
将数据添加到“属性”的“第二级”后,如果尝试单击其“键”(具有OnClick属性),将引发以下错误:
_this2.props.onPropertyClicked不是一个函数
似乎无法使用dispatch方法映射click属性。
它在第一级运行良好,允许您添加任意数量的名称和值。但在第二个嵌套级别失败
编辑:添加属性类
import React,{Component}来自'React';
从'react redux'导入{connect};
类属性扩展组件{
建造师(道具){
超级(道具);
此.state={
财产:{
关键字:“,
值:null
},
关键字:this.props.propertyKey
}
}
render(){
让dummyProperties={…this.props.property};
for(dummyProperties中的var objectKey){
log(objectKey);
log(dummyProperties[objectKey]);
}
返回(
{
(dummyProperties[this.props.propertyKey][“type”]=='property')?
{this.props.propertyKey}:
名称:{dummyProperties[this.props.propertyKey][“name”]}
值:{dummyProperties[this.props.propertyKey][“value”]}
:
this.props.onPropertyClicked(this.props.propertyKey)}>{this.props.propertyKey}:
名称:{dummyProperties[this.props.propertyKey][“name”]}
价值:
{
(dummyProperties[this.props.propertyKey][“value”]!==未定义)?
{dummyProperties[this.props.propertyKey][“value”].map(属性=>{
let out=Object.keys(property.map)(propKey=>[propKey]);
return-
})}
:
无效的
}
}
)
};
}
const mapDispatchToProps=调度=>{
返回{
onPropertyClicked:(propertyKey)=>dispatch({type:'ChangeSelectedObject',propertyKey:propertyKey})
}
};
导出默认连接(null,mapDispatchToProps)(属性)代码>我只是给你举个简单的例子。在下面的代码段中,我有一个针对键“authuser”的回调函数。每当我需要分派函数时,我都会使用此键
import authUser from 'path';
const mapDispatchToProps = dispatch => {
return {
authUser: (usr, password) => dispatch(authUser(usr, password)),
}
}
编辑:
对于那些在同一问题上遇到困难的人,我就是这样解决的:
Class Property extends React.Component
{
//some code
render(){
return(
<PropertyWrapper id="{someData}"/> // recursively calling same class (change1)
//some code
)
}
}
var PropertyWrapper = connect(mapStateToProps)(Property); // (change2)
export default PropertyWrapper
类属性扩展了React.Component
{
//一些代码
render(){
返回(
//递归调用同一类(change1)
//一些代码
)
}
}
var PropertyWrapper=connect(mapStateToProps)(属性);//(更改2)
导出默认属性rapper
导出类时,不要只按原样导出。而是将其包装在某个变量中,然后导出该变量。并将包装器作为递归类调用。能否发布Property
class?添加了Property.js类。您可以检查此“路径”是否为文件或其他任何内容的路径?这里没有指定任何操作类型:从“/src/actions/index.js”编写函数import authUser的路径;虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-编辑@Michel(抱歉迟到)