【问题标题】:React - dynamic progress barReact - 动态进度条
【发布时间】:2019-01-09 12:30:14
【问题描述】:

我想做一个动态进度条。我有一个问题,下面是可供选择的选项。如果有人选择了一些选项,那么进度条应该会移动。它必须根据签出问题的数量进行更新。我有函数handleProgress,它负责当有人点击问题时更新状态。目前,她什么都不做,因为我不知道她应该如何发送问题已被检查的信息。下面是我的代码,或者也许有人会给我一些关于我的功能区应该做什么的提示,进度条会更新。

class App extends React.Component {
      constructor(props) {
        super(props);
        this.state = {
          progressValue: 0
        };
      }

      handleProgress = () => {
        console.log("halo");
      };

      render() {
        return (
          <Styles>
            <h1>???? React Final Form Example</h1>
            <Progress value={this.state.progressValue} />
            <Wizard
              initialValues={{ employed: true }}
              onSubmit={() => {
                window.alert("Hello");
              }}
            >
              <Wizard.Page>
                <p>Page1</p>
                <div id="div" onClick={this.handleProgress}>
                  <Field name="page1" component="input" type="radio" value="1" />
                  <Field name="page1" component="input" type="radio" value="2" />
                  <Field name="page1" component="input" type="radio" value="3" />
                </div>
              </Wizard.Page>
              <Wizard.Page>
                <p>Page2</p>
                <div id="div" onClick={this.handleProgress}>
                  <Field name="page2" component="input" type="radio" value="1" />
                  <Field name="spage2" component="input" type="radio" value="2" />
                  <Field name="page2" component="input" type="radio" value="3" />
                </div>
              </Wizard.Page>
              <Wizard.Page>
                <p>Page3</p>
                <div id="div" onClick={this.handleProgress}>
                  <Field name="page3" component="input" type="radio" value="1" />
                  <Field name="page3" omponent="input" type="radio" value="2" />
                  <Field name="page3" component="input" type="radio" value="3" />
                </div>
              </Wizard.Page>
              <Wizard.Page>
                <p>Page4</p>
                <div id="div" onClick={this.handleProgress}>
                  <Field name="page4" component="input" type="radio" value="1" />
                  <Field name="page4" component="input" type="radio" value="2" />
                  <Field name="page4" component="input" type="radio" value="3" />
                </div>
              </Wizard.Page>
            </Wizard>
          </Styles>
        );
      }
    }

这是我的全部代码https://codesandbox.io/s/8l5qn573o2

【问题讨论】:

  • 请创建 stackblitz 链接
  • @Justcode 我编辑了我的帖子,我添加了指向代码框的链接;)

标签: reactjs


【解决方案1】:

您可以使用 ReactStrap 中的进度条。 您需要在其中传递当前进度的值。

我已经在https://codesandbox.io/s/40w557p680https://codesandbox.io/s/40w557p680 中分叉并更改了新的代码和框

我已将 nextPagepreviousPage 道具作为函数添加到您的向导组件中。

       <Wizard
          nextPage={this.handlePageChange} //this one
          previousPage={this.handlePageBack} //this one
          initialValues={{ employed: true }}
          onSubmit={() => {
            window.alert("Hello");
          }}
       >

现在我在这个函数上添加了这个语句:

handlePageChange = page => {
    console.log(page);
    this.setState({ progressValue: (page + 1) * 25 });
};

handlePageBack = page => {
    this.setState({ progressValue: this.state.progressValue - 25 });
  };

在您的向导组件中:

this.state = {
      page: 1,

将默认值更改为 1,以便于计算:

现在在下一个按钮上,我正在调用 prop 函数:

<button
     onClick={() => this.props.nextPage(this.state.page)}
     type="submit"
     >
     Next »
</button>

检查代码框链接中的工作示例

【讨论】:

  • 那么只需修改计算。很高兴为您提供帮助,如果您对此问题的关注得到解决,请接受此作为答案,并为我的努力投上一票。
  • 关于改变单选按钮改变进度
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-11
  • 2021-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多