Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.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 更新状态的问题-反应_Javascript_Reactjs_React Redux - Fatal编程技术网

Javascript 更新状态的问题-反应

Javascript 更新状态的问题-反应,javascript,reactjs,react-redux,Javascript,Reactjs,React Redux,我在更新状态值时遇到问题,我正在使用Map渲染外部组件,因此无法访问此。因此,在单击组件时,我无法调用handleClick函数来更新状态值 以下是国家: this.state = { attributes : { hours : { }, cost : 0, amenities : defaultAmenities }, primary_category : "General" } 其中,default是带有大型ja

我在更新状态值时遇到问题,我正在使用Map渲染外部组件,因此无法访问此。因此,在单击组件时,我无法调用handleClick函数来更新状态值

以下是国家:

this.state = {
   attributes : {
       hours : {

       },
       cost : 0,
       amenities : defaultAmenities
   },
   primary_category : "General"
}
其中,default是带有大型javascript对象的外部文件

渲染功能:

render() {
    let basicAmenities, extendedAmenities
    let basicAmenitiesList = [], extendedAmenitiesList = []

    //Wrong way of storing this
    let _this = this;
}

... More Logics / Switch Cases ...

let amenitiesList = basicAmenitiesList.map(function(item, index){
    return <Attribute key={index} name={item.amenity_id} type={item.title} icon={item.icon} selected={item.isSelected} value="" onClick={_this.handleClick.bind(_this)}/>
})
单击属性后,我需要更新状态。控制台日志的结果附在下面。我需要以输入值为目标,但由于它返回整个div,如何获取name/value/placeholder的值


宠物
你可以从目标那里得到你需要的东西。但是,您需要在希望它成为目标的元素上设置
onClick
,然后您将拥有它:

handleClick(e) {
    const name = e.target.name;
    const value = e.target.value;
    const placeholder = e.target.placeholder;
    console.log(placeholder);
}
如果要在其他地方设置
onClick
,则需要发送所需的值,因此在
Attribute
组件中,您将有一个函数,该函数将在单击时调用,并调用
this.props.onClick({name:'',value:''})

如果您需要在此函数中使用
this
,并且您正在使用react with class。你可以这样写:

handleClick = (e) => {
    console.log(this);
}

单击时需要什么值?@davintroon输入[name,value,disabled]中的值,并设置_this=这是正确的方法?不,我认为这不是最好的方法。只需绑定映射函数即可(或使用箭头函数)。您需要做的不仅仅是遵从
道具。单击
中的
。您需要在
属性
组件中执行一些操作,以便在其
onClick
上以args的形式发送正确的值。
handleClick(e) {
    const name = e.target.name;
    const value = e.target.value;
    const placeholder = e.target.placeholder;
    console.log(placeholder);
}
handleClick = (e) => {
    console.log(this);
}