Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 基于表组件中的输入在react js中创建dict的动态列表_Reactjs_List_Dictionary_Datatable_Use State - Fatal编程技术网

Reactjs 基于表组件中的输入在react js中创建dict的动态列表

Reactjs 基于表组件中的输入在react js中创建dict的动态列表,reactjs,list,dictionary,datatable,use-state,Reactjs,List,Dictionary,Datatable,Use State,我正在尝试从表组件创建字典列表,目前我能够创建以键作为索引的字典,但无法弄清楚如何创建 它可以在字典行列表中转换。 (表的第一行为键,其他行为值) 以下是沙盒链接,以便更好地理解: import React,{Fragment,useState}来自'React'; //物料ui导入 从“@material ui/core/styles”导入{fade,withStyles}”; 从“@material ui/core/styles”导入{makeStyles}”; 从“@物料界面/核心/表格

我正在尝试从表组件创建字典列表,目前我能够创建以键作为索引的字典,但无法弄清楚如何创建 它可以在字典行列表中转换。 (表的第一行为键,其他行为值)

以下是沙盒链接,以便更好地理解:

import React,{Fragment,useState}来自'React';
//物料ui导入
从“@material ui/core/styles”导入{fade,withStyles}”;
从“@material ui/core/styles”导入{makeStyles}”;
从“@物料界面/核心/表格”导入表格;
从“@material ui/core/TableBody”导入表体;
从“@material ui/core/TableCell”导入TableCell;
从“@material ui/core/TableContainer”导入TableContainer;
从“@material ui/core/TableRow”导入TableRow;
从“@material ui/core/Paper”导入纸张;
从“@material ui/core/InputBase”导入InputBase;
从“@material ui/core/TextField”导入TextField;
const useStyles=makeStyles({
表:{
最小宽度:650
}
});
const BootstrapInput=带有样式((主题)=>({
根目录:{
“标签+&”:{
marginTop:主题。间距(3),
},
},
输入:{
边界半径:4,
位置:'相对',
背景色:theme.palette.common.white,
边框:“1px实心#ced4da”,
尺寸:16,
宽度:“60%”,
填充:“5px 6px”,
过渡:theme.transitions.create(['border-color','box-shadow']),
“&:焦点”:{
boxShadow:`${fade(theme.palete.primary.main,0.25)}0.2rem`,
borderColor:theme.palette.primary.main,
},
},
}))(输入基);
导出默认函数DataTabelVariable(){
//桌子
const classes=useStyles();
常量[rowValue,setRowValue]=useState(0);
const[columnsValue,setColumnsValue]=useState(0);
const[tableCellsData,setTableCellsData]=useState();
//const[key,setKey]=useState([]);
//常量[value,setValue]=useState([])
//var-dic={};
//dict[new_key]=新_值;
const getUniqueKeyFromArrayIndex=(rowNum,columnNum)=>{
返回`${rowNum}-${columnNum}`;
};
const onChangeHandler=(e)=>{
日志(e.target.name,e.target.value);
可设置单元格数据({
…表格CellsData,
[e.target.name]:e.target.value
});
};
//const onChangeHandler=(e)=>{
//可设置单元格数据(
//         {
//…表格CellsData,
//[e.target.name]:e.target.value
//         }
//     );
//日志(e.target.name,e.target.value);
//让splitVariable=e.target.name.split('-'))
//if(拆分变量[0]=“0”){
//console.log(splitVariable[1])
//setKey(…key,key[splitVariable[1]]=e.target.value)
//     }
//else if(拆分变量[0]!=“0”){
//setValue(…值,键[splitVariable[0]]=e.target.value)
//     }
// };
//console.log(键)
//console.log(值)
const generateTable=()=>{
设table=[];
//创建父对象的外部循环
for(设i=0;i
setColumnsValue(e.target.value)}variant=“概述”/>

{generateTable()} ) }
import React, { Fragment, useState } from 'react';
// Material-ui imports
import { fade, withStyles } from '@material-ui/core/styles';
import { makeStyles } from "@material-ui/core/styles";
import Table from "@material-ui/core/Table";
import TableBody from "@material-ui/core/TableBody";
import TableCell from "@material-ui/core/TableCell";
import TableContainer from "@material-ui/core/TableContainer";
import TableRow from "@material-ui/core/TableRow";
import Paper from "@material-ui/core/Paper";
import InputBase from "@material-ui/core/InputBase";
import TextField from '@material-ui/core/TextField';
const useStyles = makeStyles({
    table: {
        minWidth: 650
    }
});
const BootstrapInput = withStyles((theme) => ({
    root: {
        'label + &': {
            marginTop: theme.spacing(3),
        },
    },
    input: {
        borderRadius: 4,
        position: 'relative',
        backgroundColor: theme.palette.common.white,
        border: '1px solid #ced4da',
        fontSize: 16,
        width: '60%',
        padding: '5px 6px',
        transition: theme.transitions.create(['border-color', 'box-shadow']),
        '&:focus': {
            boxShadow: `${fade(theme.palette.primary.main, 0.25)} 0 0 0 0.2rem`,
            borderColor: theme.palette.primary.main,
        },
    },
}))(InputBase);

export default function DataTabelVariable() {
    // Table
    const classes = useStyles();
    const [rowValue, setRowValue] = useState(0);
    const [columnsValue, setColumnsValue] = useState(0);
    const [tableCellsData, setTableCellsData] = useState();
    // const [key, setKey] = useState([]);
    // const [value, setValue] =useState([])
    // var dic = {};
    // dict[new_key] = new_value;

    const getUniqueKeyFromArrayIndex = (rowNum, columnNum) => {
        return `${rowNum}-${columnNum}`;
    };
    const onChangeHandler = (e) => {
        console.log(e.target.name, e.target.value);
        setTableCellsData({
            ...tableCellsData,
            [e.target.name]: e.target.value
        });
    };


    // const onChangeHandler = (e) => {
    //     setTableCellsData(
    //         {
    //             ...tableCellsData,
    //             [e.target.name]: e.target.value
    //         }

    //     );
    //     console.log(e.target.name, e.target.value);
    //     let splitVariable = e.target.name.split('-')
    //     if (splitVariable[0] === "0") {
    //         console.log(splitVariable[1])
    //         setKey(...key,key[splitVariable[1]] = e.target.value)  
    //     }
    //     else if (splitVariable[0]!=="0") {
    //       setValue( ...value ,key[splitVariable[0]] =  e.target.value)
    //     }
    // };
// console.log(key)
// console.log(value)
    const generateTable = () => {
        let table = [];
        // Outer loop to create parent
        for (let i = 0; i < rowValue; i++) {
            let children = [];
            //Inner loop to create children
            for (let j = 0; j < columnsValue; j++) {
                children.push(
                    <td>
                        <BootstrapInput
                            name={getUniqueKeyFromArrayIndex(i, j)}
                            onChange={onChangeHandler}
                        />
                    </td>
                );
            }
            table.push(
                <TableRow key={i}>
                    <TableCell>{children}</TableCell>
                </TableRow>
            );
            console.log(tableCellsData);
        }
        return table;
    };


    return (
        <Fragment>
            <div>
                <h5>Select Row number and Columns number</h5>
                <div className={"rowColumnsNumber"} style={{ marginTop: 20 }}>
                    <TextField id="Row-number" label="Row(s)" type="number" InputLabelProps={{ shrink: true, }} inputProps={{ min: "0", max: "1000", step: "1" }} onChange={(e) => setRowValue(e.target.value)} variant="outlined" />
                    <TextField id="Columns-number" label="Columns(s)" type="number" inputProps={{ min: "0", max: "1000", step: "1" }} InputLabelProps={{ shrink: true, }} onChange={(e) => setColumnsValue(e.target.value)} variant="outlined" />
                </div>
                <br />
                <div className={"TableContainer"}>
                    <TableContainer component={Paper}>
                        <Table className={classes.table} aria-label="simple table">
                            <TableBody>{generateTable()}</TableBody>
                        </Table>
                    </TableContainer>
                </div>
            </div>
        </Fragment>
    )

}