Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/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
Reactjs 更新其他输入更改的输入-反应_Reactjs - Fatal编程技术网

Reactjs 更新其他输入更改的输入-反应

Reactjs 更新其他输入更改的输入-反应,reactjs,Reactjs,我有一个简单的表单,有3个输入:一个用于选择套餐的选择,两个用于与会者和价格的数字输入,我试图根据套餐信息计算价格和与会者,但与会者和价格输入不会更新 <Select value={this.state.event.pakage.id} onChange = {handlePackageChange} inputProps={{ name: 'evt-pkg', id: 'evt-pkg', }}> {this.state.pkg.map(

我有一个简单的表单,有3个输入:一个用于选择套餐的选择,两个用于与会者和价格的数字输入,我试图根据套餐信息计算价格和与会者,但与会者和价格输入不会更新

<Select
  value={this.state.event.pakage.id}
  onChange = {handlePackageChange}
  inputProps={{
    name: 'evt-pkg',
    id: 'evt-pkg',
  }}>
      {this.state.pkg.map((val, key) => <MenuItem key={key} value={val.id}>{val.name}</MenuItem>)}
</Select>

const handlePackageChange = (event,newValue) => {
  let pakage = this.state.pkg.find(p => p.id === event.target.value);
  let attendees = pakage.attendees;
  let price = pakage.price * attendees;

  this.setState(prevState => ({event : {...prevState.event, pakage : {id :newVal}, attendees : attendees, price: price}}))
}

{this.state.pkg.map((val,key)=>{val.name}
const handlePackageChange=(事件,newValue)=>{
让pakage=this.state.pkg.find(p=>p.id==event.target.value);
让与会者=pakage.attendes;
让价格=pakage.price*与会者;
this.setState(prevState=>({event:{…prevState.event,pacage:{id:newVal},attendes:attendes,price:price}))
}
以及价格投入

<TextField
  id="evt-price"
  type="number"
  name="evt-price"
  onChange = {(event,newValue) => {
  var newVal = event.target.value;
  this.setState(prevState => ({event : {...prevState.event, price : newVal}}))
/>

.... attendee input
{
var newVal=event.target.value;
this.setState(prevState=>({event:{…prevState.event,price:newVal}}))
/>
..与会者输入

我在控制台中看到事件对象已更新,但输入值没有更改

您没有将值分配给TextField组件。Try value={this.state.price}pfff…我尝试使用defaultValue属性而不是值。它正在工作,谢谢您不应该对受控输入字段使用defaultValue。您没有将值分配给TextField组件。Try value={this.state.price}pfff…我尝试使用defaultValue属性而不是值。它可以工作,谢谢您不应该对受控输入字段使用defaultValue。