【问题标题】:react-grid layout html not updating colsreact-grid layout html不更新cols
【发布时间】:2021-03-13 08:38:53
【问题描述】:

我使用反应网格布局:https://github.com/react-grid-layout/react-grid-layout

我不明白为什么我的表格中的列数没有通过网络浏览器更新。

其实 this.props.cols.lg 不是 17 就是 24。

当它是 17 时,我的表格显示正确。另一方面,当我选择一个有 24 列的时间段时,我的列从第 18 列开始依次排列。

this.props.cols.lg 为正确的值(17 或 24),但我的 HTML 页面没有更新到设计级别。

这是单行的正确表格:

Right table

如您所见,firefox web 控制台显示 react 属性在 17 时很好:

还有那张坏桌子

Bad table

这里,firefox 网络控制台再次显示反应属性是正确的 (24),但没有被网络浏览器应用:

重要信息,

this.props.cols.lg=loopValue+1; **contains the right value (17 or 24) but apply on 17**

提前感谢您的帮助。

这是我的代码的一部分:

import React, { useState, useEffect, Fragment } from 'react';
import { WidthProvider, Responsive } from "react-grid-layout";
import ReactTooltip from 'react-tooltip';
import _ from "lodash";
import { Button, Container } from 'react-bootstrap';
const ResponsiveReactGridLayout = WidthProvider(Responsive);
import { Responsive as ResponsiveGridLayout } from 'react-grid-layout';
/**
 * This layout demonstrates how to use a grid with a dynamic number of elements.
 */
export class AddRemoveLayout extends React.PureComponent {
    //les propriétés par défaut
    static defaultProps = {
        className: "layout border-darken-1 child-background-color",
        cols:
        { lg: 10, md: 10, sm: 10, xs: 10, xxs: 10 },
        width: 1000,
        margin: [0, 0],
        preventCollision: true,
        autoSize: true,
      //  preventCollision: true,
        rowHeight: 70,

    // Build HTML to insert
    render() {


        //Week
        let createDateItem =
            (x, y, day) => ({
                i: `date-${x}_${y}`,
                x,
                y,
                w: 1,
                h: 1,
                myText: `${day}` ,
                static: true
            });
        /**
         *
         * @param {*} y
         * @param {*} xStart
         * @param {num semaine} dateStart
         * @param {nombre semaine total} count
         */

        let getDateItems =
            (y, xStart, dateStart, count,dateEnd) => {
                let items = [];

                let loopValue = 0;

                while(dateStart<=dateEnd){//semainee
                    if(loopValue>1){
                        dateStart.setDate(dateStart.getDate() + 7)
                    }
                    if(dateStart<=dateEnd){
                    items.push(
                        createDateItem(xStart + loopValue, y,  loopValue === 0 ? 0 :
                           (dateStart.getDate()+"/" +(dateStart.getUTCMonth()+1)+ " (Sem. "+loopValue +") ")
                        ))
                    }
                    loopValue++;
                }

               console.log('props:')
               console.log(this.props);
               this.props.cols.lg=loopValue+1;
               this.props.cols.md=loopValue+1;
               this.props.cols.sm=loopValue+1;
               this.props.cols.xs=loopValue+1;
               this.props.cols.xxsloopValue+1;
               console.log(this.props);

               // console.log(AddRemoveLayout.defaultProps)

                return items;
            }
            ;
    

【问题讨论】:

    标签: reactjs laravel twitter-bootstrap react-grid-layout


    【解决方案1】:

    我们找到了解决方案:

    data: { idHoraire: 1 },
    

    发送到 PHP 的始终是同一个项目,使用此代码,我可以很好地显示我的列,因为我发送 1(17 列)或 2(25 列):

    data: { idHoraire: url === "index2" ?2 : 1, },
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-30
      • 1970-01-01
      • 1970-01-01
      • 2020-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-18
      相关资源
      最近更新 更多