首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用react创建复选框时出现问题

使用react创建复选框时出现问题
EN

Stack Overflow用户
提问于 2019-06-11 06:03:44
回答 1查看 139关注 0票数 0

实际上,我正在尝试使用react创建一个复选框,我尝试了很多方法,每次它都显示相同的输出:透明颜色的复选框的标签始终位于网页的左上角:

创建它的代码:

<div>
   <input type="checkbox" checked={this.state.checked} onChange={this.handleCheckClick}  id="filled-in-box"/>
   <label htmlFor="filled-in-box">Tomate</label>
</div>

handleCheckClick = () => {
    this.setState({ checked: !this.state.checked });
  }

甚至没有一个复选框的标志

// @ts-check
import React, { Component } from 'react';
import './Dash.css';
import Filtro from './Filtro.js';
import { Link, Element , Events, animateScroll as scroller } from 'react-scroll'
import Pie from './Pie';
import Chart from './Chart';
import RadioGroup from '@material-ui/core/RadioGroup';
import CheckboxCP from '@material-ui/core/Checkbox';
import { makeStyles } from '@material-ui/core/styles';
import { Checkbox } from "reakit/Checkbox";


class Dash extends Component {

  // Initialize data for use
  constructor(props){
    super(props);
    this.state = {
      kg_user:{},
      alimentos_user:{},
      kg_geral:{},
      alimentos_geral:{}


    }
  }

  handleCheckClick = () => {
    this.setState({ checked: !this.state.checked });
  }

  async callApi_general(){
    let res = await fetch('/colheitas', {
      method: 'POST',
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json'
      }})

    res = await res.json()
    //parsing json
    let Sres = JSON.stringify(res);
    let Jres = JSON.parse(Sres)

    var quantidade_colhida = 0;
    var quantidade_bercos = 0;
    let nome_alimentos = []
    const quant_alimentos = []
    for (var i = 0; i <Jres.length; i++){
      var colheita = Jres[i];
      var Sdados = JSON.stringify(colheita["detalhes_colheita"])
      var Jdados = JSON.parse(Sdados)
      for (var k in Jdados){
        //geral
        quantidade_colhida += parseFloat(Jdados[k]["quantidade"]);
        quantidade_bercos += parseFloat(Jdados[k]["quant_bercos"]);
        //alimentos geral
        if (nome_alimentos.indexOf(k) < 0) {
          nome_alimentos.push(k)
          quant_alimentos.push(parseFloat(Jdados[k]["quantidade"]))
          }
        else{
          var j = nome_alimentos.indexOf(k)
          quant_alimentos[j] += parseFloat(Jdados[k]["quantidade"])
          }
      }
    }


    var kg_geral = {
      labels: ['Total (kg)', 'Berços'],
      datasets:[
        {
          data:[
            quantidade_colhida,
            quantidade_bercos
          ],
          backgroundColor:[
            'rgba(255, 99, 132, 0.8)',
            'rgba(54, 162, 235, 0.8)',
          ]
        }
      ]
    }

    var alimentos_geral = {
      labels: nome_alimentos,
      datasets:[
        {label:'Kg',
          data:quant_alimentos ,
          backgroundColor:[
            'rgba(255, 99, 132, 0.8)',
            'rgba(54, 162, 235, 0.8)',
            'rgba(255, 206, 86, 0.8)',
            'rgba(75, 192, 192, 0.8)',
            'rgba(153, 102, 255, 0.8)',
            'rgba(255, 100, 64, 0.8)',
            'rgba(255, 99, 132, 0.8)',
          ]
        }
      ]
    }
    return [kg_geral,alimentos_geral]
  }



  // Handle's API response for user
  async callApi_user(id){
    let res = await fetch('/colheitas', {
      method: 'POST',
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        id_autor: id
      })
    })

    res = await res.json()
    //parsing json
    let Sres = JSON.stringify(res);
    let Jres = JSON.parse(Sres)

    var quantidade_colhida = 0;
    var quantidade_bercos = 0;
    let nome_alimentos = []
    const quant_alimentos = []
    for (var i = 0; i <Jres.length; i++){
      var colheita = Jres[i];
      var Sdados = JSON.stringify(colheita["detalhes_colheita"])
      var Jdados = JSON.parse(Sdados)
      for (var k in Jdados){
        //geral
        quantidade_colhida += parseFloat(Jdados[k]["quantidade"]);
        quantidade_bercos += parseFloat(Jdados[k]["quant_bercos"]);
        //alimentos geral
        if (nome_alimentos.indexOf(k) < 0) {
          nome_alimentos.push(k)
          quant_alimentos.push(parseFloat(Jdados[k]["quantidade"]))
          }
        else{
          var j = nome_alimentos.indexOf(k)
          quant_alimentos[j] += parseFloat(Jdados[k]["quantidade"])
          }
      }
    }


    var kg_user = {
      labels: ['Total (kg)', 'Berços'],
      datasets:[
        {
          data:[
            quantidade_colhida,
            quantidade_bercos
          ],
          backgroundColor:[
            'rgba(255, 99, 132, 0.8)',
            'rgba(54, 162, 235, 0.8)',
          ]
        }
      ]
    }

    var alimentos_user = {
      labels: nome_alimentos,
      datasets:[
        {label:'Kg',
          data:quant_alimentos ,
          backgroundColor:[
            'rgba(255, 99, 132, 0.8)',
            'rgba(54, 162, 235, 0.8)',
            'rgba(255, 206, 86, 0.8)',
            'rgba(75, 192, 192, 0.8)',
            'rgba(153, 102, 255, 0.8)',
            'rgba(255, 100, 64, 0.8)',
            'rgba(255, 99, 132, 0.8)',
          ]
        }
      ]
    }
    return [kg_user,alimentos_user]
  }





  // Calls Api and set State
  async componentWillMount(){
    //var id = null
    var id = this.props.id //---pessoal do login tem que passar id como props
      var data_geral  = await this.callApi_general()
      this.setState({ kg_geral:data_geral[0] , alimentos_geral:data_geral[1]})
    //chama todas colheitas feitas

    // caso haja id(usuário está logado), chama as colheitas feitas pelo usuário
    if(id !== null){
      var data_user  = await this.callApi_user(id)
      this.setState({ kg_user:data_user[0] , alimentos_user:data_user[1]})
    }
  }

  //front
  componentDidMount(){
    Events.scrollEvent.register('begin', function() {
      console.log("begin", arguments);
    });

    Events.scrollEvent.register('end', function() {
      console.log("end", arguments);

    });
  }
//front
  scrollTo() {
    // @ts-ignore
    scroller.scrollTo('scroll-to-element', {
      duration: 800,
      delay: 0,
      smooth: 'easeInOutQuart'
    })
  }

  render () {
    //var id = null
    var id = this.props.id //---pessoal do login tem que passar id como props
    return (
      <div>
        <nav>
          <div className="container-fluid">
            <div className="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
              <ul className="nav navbar-nav">

                <li><Link activeClass="active" className="GraphGeral" to="GraphGeral" spy={true} smooth={true} duration={500} >Colheita por alimento CSA</Link></li>
                {id !== null && <li><Link activeClass="active" className="GraphEsp_1" to="GraphEsp_2" spy={true} smooth={true} duration={500}>Colheita por alimento Usuário</Link></li>}
                <li><Link activeClass="active" className="GraphEsp_2" to="GraphEsp_1" spy={true} smooth={true} duration={500} >Temporada de Colheita CSA</Link></li>
                {id !== null && <li><Link activeClass="active" className="GraphEsp_3" to="GraphEsp_3" spy={true} smooth={true} duration={500} >Temporada de Colheita Usuário</Link></li>}                

              </ul>
              <div>
            <label htmlFor="filled-in-box">
            Tomate
            <input
                type="checkbox"
                checked={this.state.checked}
                onChange={this.handleCheckClick}
                id="filled-in-box" />
            </label>
        </div>
            </div>
          </div>
        </nav>
        <Element name="GraphGeral" className="element" >
        Colheita por alimento CSA
        <div className="App">
          <Pie alimentos={this.state.alimentos_geral}/>
          <RadioGroup value={this.state.alimentos_geral} onChange={this.handleChange}></RadioGroup>
        </div>

        </Element>

        {id !== null && 
        <Element name="GraphEsp_2" className="element">
        Colheita por alimento Usuário 
        <div className="App">
          <Pie alimentos={this.state.alimentos_user}/>
          <input type="checkbox" checked={this.state.checked} onChange={this.handleCheckClick}  id="filled-in-box"/>
          <label htmlFor="filled-in-box">Tomate</label>
        </div>
        </Element>}

        <Element name="GraphEsp_1" className="element">
        Temporada de Colheita CSA
        <div className="App">
          <Chart kg={this.state.kg_geral}/>
        </div>
        </Element>

        {id !== null &&
        <Element name="GraphEsp_3" className="element">
        Temporada de Colheita Usuário
        <div className="App">
          <Chart kg={this.state.kg_user}/>
        </div>
        </Element>}



      </div>

);


}
};

export default Dash;
EN

回答 1

Stack Overflow用户

发布于 2019-06-11 06:28:15

试着把这个放进去。

        <div>
            <label htmlFor="filled-in-box">
            Tomate
            <input
                type="checkbox"
                checked={this.state.checked}
                onChange={this.handleCheckClick}
                id="filled-in-box" />
            </label>
        </div>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56534080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档