Как использовать значение состояния в дочернем компоненте в реакции - PullRequest
0 голосов
/ 04 февраля 2020

Я пытаюсь найти наилучший способ использовать значение состояния в дочернем компоненте. Идея состоит в том, чтобы создать установочный компонент с состоянием, которое может быть обновлено с помощью пользовательского ввода, и это обновленное значение затем можно использовать для изменения результата некоторых вычислений в другом компоненте. Я пробовал Redux, но я не могу просто заставить его работать.

У меня есть форма, которая собирает пользовательские данные


 class SettingModal extends Component {
     constructor(props){
      super(props);
       this.state={
           open:false,
           value: '',
       }
     }
     handleChange(e) {
      this.setState({value: e.target.value}, () =>
        this.props.valueDispatcher(this.state.value),
      )
    }

    render() {
        const { open } = this.state;
    return (
      <>
        <Button variant="link"
                className="promo-code-button"

          onClick={() => this.setState({ open: !open })}
          aria-controls="example-collapse-text"
          aria-expanded={open}
        >
         {open === false? <Button

color="primary"
block
className="btn-round"
         >
Overtime rate Settings
         </Button>:<Button
         color="primary"
         block
         className="btn-round"
         >
             Close overtime Settings
             </Button>} 


        </Button>

         <Collapse in={open}>
         <div id="example-collapse-text">
         <Row className="show-grid">
         <Col md={12}>
         <Form>
  <Form.Group controlId="formInlineName">
    <Form.Label>Enter overtime rate and click apply...</Form.Label>
    <Form.Control type="text" placeholder="type here" 
 value={this.state.value}
 onChange={this.handleChange.bind(this)}
    />
    <Form.Text className="text-muted">

    </Form.Text>
  </Form.Group>
  <Button
  block
  variant="success"

  disabled={this.props.isDisabled}
  onClick={this.props.giveDiscount}
  >Apply</Button>
  </Form>
         </Col>


         </Row>


         </div>

         </Collapse>

        </>
   );
}
}


И это компонент отправки

import { React, useState, useCallback} from 'react';
import WagesSettingModal from './WagesSettingModal';
import WagesCalculator7 from './WagesCalculator7';

function OvertimeRateValue (props) {
  const [value, setValue] = useState('Initial')

  const handleChange = useCallback(e => setValue(e.target.value), [])

  return (
    <div>
      < WagesSettingModal valueDispatcher={setValue} />
      <WagesCalculator value={value}/>
    </div>
  )
}


export default OvertimeRateValue;


И, наконец, я использую это значение здесь

import React from 'react'
Imported above component from './above component'

 renderTable() {


    var totalCount = 0;
    var shownCount = 0;
    var lowerBound = 0;
    var upperBound = 0;
    var filtered = [];

    filtered = this.state.data.map( (row, i,) => {
      if(row.department.toLowerCase().indexOf(this.state.departmentFilter) > -1){
        return (
          <tr key={"employeeData"+i}>
            <td>{i+1}</td>

            <td>{row.name}</td>
            <td>{row.numberofPresentAttendances}</td>
            <td>{row.department}</td>
            <td>{row.wages}</td>


            <td>
            <Link to={"/employee/overtime/"+row._id}>
                <Button className="btn btn-light"><Overtime/></Button>
              </Link>

            </td>
            <td>{row.overtime}</td>
            <td>{row.totalWages}</td>
            <td>


              {row.overtime<1? row.numberofPresentAttendances * row.wages* 8
            : row.numberofPresentAttendances * [row.wages* 8]+[row.wages*<above component/>]*row.overtime}

            </td>



            <td>


            </td>
          </tr>
        );

Моя цель - иметь возможность изменить результат результата вычисления, изменяя число, введенное пользователем

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...