Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.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_Redux_Lodash - Fatal编程技术网

Javascript 如何传递作为状态一部分的“编辑”对象并返回该已编辑对象?

Javascript 如何传递作为状态一部分的“编辑”对象并返回该已编辑对象?,javascript,reactjs,redux,lodash,Javascript,Reactjs,Redux,Lodash,我有一个这样的目标: Object{} 此对象内部有其他对象,但由键标记,如下所示: Object{1: Object, 2: Object, 3: Object} 我希望能够选择这些对象中的一个,或者通过仅使用键的值进行编辑。假设对象1是一个具有 1: Object { title: "yay Im a title", description: "yay Im a desc", quantity: 1 } 我希望能够得到一个类似于1的值,并且能够取出键为1的特定对

我有一个这样的目标:

Object{}
此对象内部有其他对象,但由键标记,如下所示:

Object{1: Object, 2: Object, 3: Object}
我希望能够选择这些对象中的一个,或者通过仅使用键的值进行编辑。假设对象1是一个具有

1: Object {
   title: "yay Im a title",
   description: "yay Im a desc",
   quantity: 1
   }
我希望能够得到一个类似于1的值,并且能够取出键为1的特定对象,并在每次调用函数或任何东西时更新1的数量。如果这件事没有成功,请告诉我

这是我在react/redux中使用的一个项目

我将发布每个相关代码:

行动:

 export function updateCart(_id, unit) {
  return {
    type: "UPDATE_CART",
    _id: _id,
    unit: unit
  }
}
减速器:

case "UPDATE_CART":
    let foundBook = _.get(state, action._id);
    //Stuck here, want to update quantity by one and return the item
    break;
在其中调用操作的组件:

import React , { Component } from 'react';
import {connect} from 'react-redux';
import {addToCart, updateCart} from '../../actions/cartActions';

class BookItem extends Component {

  handleCart() {
    const book = {
      _id: this.props._id,
      title: this.props.title,
      description: this.props.description,
      price: this.props.price,
      quantity: 1
    }
    if(Object.keys(this.props.cart).length > 0) {
      let _id = this.props._id;

      let cartIndex = _id in this.props.cart;
      if(!cartIndex) {
        this.props.addToCart(book);
      } else {
        this.props.updateCart(_id, 1);
      }

    } else {
      this.props.addToCart(book);
    }
  }

  render() {
    return (
      <div className="well">
        <div className="row">
          <div className="col-xs-12">
            <h6>{this.props.title}</h6>
            <p>{this.props.description}</p>
            <h6>{this.props.price}</h6>
            <button onClick={this.handleCart.bind(this)} className="btn btn-primary">Buy now</button>
          </div>
        </div>
      </div>
    );
  }
}

function mapStateToProps(state) {
 return {
   cart: state.cart
 }
}

export default connect(mapStateToProps, {addToCart, updateCart})(BookItem);
import React,{Component}来自'React';
从'react redux'导入{connect};
从“../../actions/cartActions”导入{addToCart,updateCart};
类BookItem扩展组件{
handleCart(){
常数书={
_这个。道具。_id,
标题:this.props.title,
description:this.props.description,
价格:这个。道具。价格,
数量:1
}
if(Object.keys(this.props.cart).length>0){
让_id=this.props._id;
在this.props.cart中,让cartinex=_id;
如果(!cartinex){
这个.props.addToCart(书);
}否则{
this.props.updateCart(_id,1);
}
}否则{
这个.props.addToCart(书);
}
}
render(){
返回(
{this.props.title}
{this.props.description}

{this.props.price} 立即购买 ); } } 函数MapStateTops(状态){ 返回{ 购物车:state.cart } } 导出默认连接(MapStateTops,{addToCart,updateCart})(BookItem);

希望这不会让我现在感到困惑,但根据我的要求,我发布了我正在做的工作,希望能有所帮助

一种非常基本的方法可能是创建一个将对象、键和可选函数作为参数的函数。如果函数作为第三个参数提供,则将根据具有给定键的子对象(如果位于)对其求值。返回子对象(如果找到)

使用
hasOwnProperty
可以定位仅属于父对象而不是从原型继承的子对象

function extract(obj, key,fn) {
    if (obj === null || typeof obj !== 'object' || 
        key === null || !obj.hasOwnProperty(key) || typeof obj[key] !== 'object' || 
        obj[key] === null) 
        return null;

    if (typeof fn === 'function' && fn !== null) 
        fn(obj[key]);

    return obj[key];
}

基于什么,您希望能够返回像1这样的值?为了“找回”1,你打算付出什么?请注意,可以使用方括号使用动态键访问属性值:
key=1;myTitle=myObject[key].title
我能够通过使用lodash和var foundItem=uu.get(state,1);,从大对象中获取对象。这返回了我想要的对象及其所有属性,现在我需要能够编辑该对象并仍然返回其所有旧属性。这太模糊了。请发布您的代码和期望的结果。顺便说一句,你的问题中没有提到
。尽可能具体。更新代码。抱歉搞混了