Chỉnh sửa state trong component cháu trong React

Hãy xem xét component Product mà chúng ta đã có được trong bài học trước:

jsxfunction Product({ id, name, cost, isEdit, toggleMode, editProd }) {
  return <div>
    name: {
      isEdit
      ? <input value={name} onChange={event => editProd(id, 'name', event)} />
      : <span>{name}</span>
    }
    cost: {
      isEdit
      ? <input value={cost} onChange={event => editProd(id, 'cost', event)} />
      : <span>{cost}</span>
    }
    
    <button onClick={() => toggleMode(id)}>
      {isEdit ? 'save': 'edit'}
    </button>
  </div>;
}

Có thể dễ dàng nhận thấy rằng mã cho tên sản phẩm và cho giá sản phẩm gần như giống hệt nhau. Hãy tách mã này ra thành một component riêng biệt ProductField:

jsxfunction ProductField({ id, text, type, isEdit, editProd }) {
  return isEdit
    ? <input value={text} onChange={event => editProd(id, type, event)} />
    : <span>{text}</span>
  ;
}

Hãy áp dụng các thay đổi vào component Product:

jsxfunction Product({ id, name, cost, isEdit, toggleMode, editProd }) {
  return <div>
    name: <ProductField
      id={id}
      text={name}
      type="name"
      isEdit={isEdit}
      editProd={editProd}
    />,
    
    cost: <ProductField
      id={id}
      text={cost}
      type="cost"
      isEdit={isEdit}
      editProd={editProd}
    />
    
    <button onClick={() => toggleMode(id)}>
      {isEdit ? 'save': 'edit'}
    </button>
  </div>;
}
Задание 1

Hãy thực hiện các thao tác tương tự với component User mà bạn đã tạo trong các bài học trước.