反应网格布局 html 不更新列
react-grid layout html not updating cols
我使用反应网格布局:https://github.com/react-grid-layout/react-grid-layout
我不明白为什么我的 table 中的列数没有通过网络浏览器更新。
事实上,this.props.cols.lg 要么是 17,要么是 24。
17时,我的table显示正确。另一方面,当我选择一个包含 24 列的句点时,我的列从第 18 列开始依次放置。
this.props.cols.lg 到正确的值(17 或 24),但我的 HTML 页面没有更新到设计级别。
这是正确的 table 单行 :
如您所见,firefox web 控制台显示 17 的反应属性很好:
和坏的table
再次,firefox web 控制台显示反应属性是正确的 (24) 但未被 web 浏览器应用:
重要信息,
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;
}
;
我们找到了解决方案:
data: { idHoraire: 1 },
发送到 PHP 的总是相同的项目,使用此代码,我对我的列有很好的显示,因为我发送 1(17 列)或 2(25 列):
data: { idHoraire: url === "index2" ?2 : 1, },
我使用反应网格布局:https://github.com/react-grid-layout/react-grid-layout
我不明白为什么我的 table 中的列数没有通过网络浏览器更新。
事实上,this.props.cols.lg 要么是 17,要么是 24。
17时,我的table显示正确。另一方面,当我选择一个包含 24 列的句点时,我的列从第 18 列开始依次放置。
this.props.cols.lg 到正确的值(17 或 24),但我的 HTML 页面没有更新到设计级别。
这是正确的 table 单行 :
如您所见,firefox web 控制台显示 17 的反应属性很好:
和坏的table
再次,firefox web 控制台显示反应属性是正确的 (24) 但未被 web 浏览器应用:
重要信息,
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;
}
;
我们找到了解决方案:
data: { idHoraire: 1 },
发送到 PHP 的总是相同的项目,使用此代码,我对我的列有很好的显示,因为我发送 1(17 列)或 2(25 列):
data: { idHoraire: url === "index2" ?2 : 1, },