代码之家  ›  专栏  ›  技术社区  ›  James Delaney

将不起作用的onChange函数从父级传递到子级

  •  0
  • James Delaney  · 技术社区  · 6 年前

    并提供给输入文件,那么输入文件有bug,我根本无法更改值。

     handleChange = (e, data) => {
        if (data && data.name) {
          this.props.setFieldValue(data.name, data.value)
    
          if (data.name === 'pay_rate') {
            console.log('PAY_RATE: ', data)
          }
        }
      }
    
    
      return (
        <Grid.Column width={8}>
          <Segment raised>
            <Header>
              <p style={{ fontSize: '1.2rem' }}>
                Church Mutual Worker\'s Compensation Claim
                <span style={{ float: 'right' }}>{`Claim #${props.claim.claimNumber}`}</span>
              </p>
            </Header>
    
            <Form onSubmit={handleSubmit}>
    
        // Here called is Child component
                <EditStandaloneClaimDetails
                claim={props.claim}
                loading={loading}
                handleChange={props.handleChange}
                />    
            </Form>
          <Comment currentClaim={props.currentClaim} />
        </Segment>
      </Grid.Column>
    )
    

    子组件:

    const EditStandaloneClaimDetails = ({ handleChange, claim, loading, testChange }) => {
      if (!claim || loading) {
        return null
      }
    
      const { noticeOnly, recieveDate, accountNumber } = claim
    
      return (
        <Segment
          raised
          style={{
            backgroundColor: '#F0F0F0',
          }}
        >
          <h5>Claim Details</h5>
          <Form.Group >
    
            <Form.Field>
            // CANNOT ENTER A NEW VALUE FOR DATE INPUT FILED
              <label>Date Received</label>
              <DateInput
                name={'recieveDate'}
                placeholder="Date received"
                value={recieveDate}
                onChange={handleChange}
                style={{ width: '65%' }}
                dateFormat={'MM/DD/YYYY'}
              />
            </Form.Field>
    
           </Form.Group >
    

    1 回复  |  直到 6 年前
        1
  •  2
  •   Sagar    6 年前

    您可以使用回调函数来处理它。

    在你的 父组件 替换以下行:

    handleChange = (e, data) => {
     //here you get the updated date 
     //add your logic
    }
    
    // Here called is Child component
    
    <EditStandaloneClaimDetails
       recieveDate = {'your date'}
       claim={props.claim}
       loading={loading}
       handleChange={(event, data) =>this.handleChange(event,data)}
      />    
    

    子组件

    constructor(props){
      super();
      this.state = { recieveDate: prop.recieveDate };
    }
    
    HandleChange(event,value){
       this.setState({ recieveDate})
        this.props.handleChange(value,event.uid);
    }
    
    <DateInput
            name={'recieveDate'}
            placeholder="Date received"
            value={recieveDate}
            onChange={(event, value) =>this.HandleChange(event,data)}
            style={{ width: '65%' }}
            dateFormat={'MM/DD/YYYY'}
          />