javascript - 如何从 ReactJS 中的外部文件循环 JSON 数据?

标签 javascript html json reactjs

我制作了 2 个按钮和 1 个输入框。按钮 (+/-) 用于递增和递减计数器。最初输入字段包含日期,即 data.available_slots[0].date

当我通过单击 + 按钮递增时,日期从 Wed, Dec 06 动态变化到 Thur, Dec07Fri, Dec08 和以此类推到最后一个日期,即 Wed, Dec13

JSONdata 的长度是 7 即 data.available_slots[0].datedata.available_slots[6].date 所以当计数器达到 6 时它不应该进一步增加,如果计数器减少,那么它不应该低于 0。

但是现在当计数器(索引)超出界限时它会显示错误(见屏幕截图)

查看各种屏幕截图,点击按钮在输入字段中显示各种日期 https://imgur.com/a/aek4e

日期选择器.js:

import React, { Component } from 'react';
import data from './data';
import './datepicker.css';

class DatePicker extends Component {

  constructor(props){
    super(props);
     this.state = {
        counter:0
     };
   }

  increment(){
    this.setState({
      counter: this.state.counter + 1
    });
  }

  decrement(){
    if(this.state.counter > 0){
      this.setState(prevState => ({counter: prevState.counter-1}))
   }
  }


  render() {
    return (
      <div>
        <div id="center">
            <label for="name">Pick a Date </label>
            <p></p>
            <button type="button" className="btn btn-success" id="plus" onClick={this.increment.bind(this)}>+</button>
            <input type="text" id="date" value={data.available_slots[this.state.counter].date}/>
            <button type="button" className="btn btn-danger" id="minus" onClick={this.decrement.bind(this)}>-</button> 
        </div>
      </div>
    );
  }
}

export default DatePicker;

数据.js:

const data = {
        "template_type": "slot_picker",
        "selection_color": "#000000",
        "secondary_color": "#808080",
        "title": "Available Slots for Dr. Sumit",
        "available_slots": [
          {
            "date": "Wed, Dec 06",
            "date_slots": [

            ]
          },
          {
            "date": "Thu, Dec 07",
            "date_slots": [

            ]
          },
          {
            "date": "Fri, Dec 08",
            "date_slots": [

            ]
          },
          {
            "date": "Sat, Dec 09",
            "date_slots": [

            ]
          },
          {
            "date": "Today",
            "date_slots": [
              {
                "hour": "8",
                "hour_slots": [
                  {
                    "08:10 AM": "slotId001"
                  },
                  {
                    "08:50 AM": "slotId005"
                  }
                ]
              },
              {
                "hour": "3",
                "hour_slots": [
                  {
                    "03:00 PM": "slotId005"
                  },
                  {
                    "03:30 PM": "slotId007"
                  }
                ]
              }
            ]
          },
          {
            "date": "Tomorrow",
            "date_slots": [

            ]
          },
          {
            "date": "Wed, Dec 13",
            "date_slots": [
              {
                "hour": "4",
                "hour_slots": [
                  {
                    "04:30 PM": "slotId105"
                  },
                  {
                    "04:50 PM": "slotId106"
                  }
                ]
              },
              {
                "hour": "5",
                "hour_slots": [
                  {
                    "05:30 PM": "slotId202"
                  },
                  {
                    "05:45 PM": "slotId208"
                  }
                ]
              }
            ]
          }
        ]
      };

 export default data;

enter image description here

最佳答案

在递增它的值之前检查计数器值。像这样:

increment(){
    if(this.state.counter < 6)
        this.setState({
            counter: this.state.counter + 1
        });
}

或者

increment(){
    this.setState(prevState => ({
        counter: prevState.counter < 6? (prevState.counter+1): prevState.counter
    }));
}

关于javascript - 如何从 ReactJS 中的外部文件循环 JSON 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48961720/

相关文章:

javascript - Canvas 标签中的 addEventListener

html - 同一类的所有跨度应具有相同的宽度并保持悬停状态

python - 使用 html5lib 验证 HTML 片段

java - Cassandra 的指标监控 native API

python - 使用来自 JSON 响应的数据

C# asp.net 按钮单击事件中的 JavaScript 函数不起作用

javascript - 关闭标签和打开标签之间的光标位置

javascript - 错误 $.fn.DataTable.TableTools 不是函数

php - 如何从显示的 24 个值中获得总分。我是否添加第二个选择语句或是否对分数求和

sql-server - 使用 OPENJSON 时存储过程中关键字 'with' 附近的语法不正确