Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将DispatchToProps方法映射到嵌套react类的onClick属性?_Javascript_Reactjs_Redux_React Redux - Fatal编程技术网

Javascript 如何将DispatchToProps方法映射到嵌套react类的onClick属性?

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

我有一个react类“Property”,它在redux状态下有一些名称和值。一个“属性”的值可以是另一个具有名称和值的“属性”。这取决于用户希望嵌套的级别。所以我从同一个“Property”类调用了“Property”类。并已将其中一个propertyKey的OnClick属性映射到mapDispatchToProps方法以进行某些处理

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(抱歉迟到)