Browse Source

Update App.js

dev
tianya 3 years ago
parent
commit
737db06c4e
1 changed files with 61 additions and 17 deletions
  1. +61
    -17
      knmanage/src/App.js

+ 61
- 17
knmanage/src/App.js View File

@@ -1,10 +1,8 @@
import logo from './logo.svg';
import './App.css'; import './App.css';
import init, { greet } from "knmodel";
import React, { useEffect, useState, useMemo } from 'react';
import React, { useState, useMemo } from 'react';


var d = {
// 默认规则数据
window.d = {
field: '就诊卡号11', field: '就诊卡号11',
required: 1, required: 1,
chiled: [ chiled: [
@@ -72,18 +70,48 @@ var d = {
], ],
}; };


function App() {
// 这里主要用于同步全局对象
function updateData(index = "", name, value) {
console.log(index,name,value);
let idxs = index.split("-");
let dStr = "";
let i = 0;
while (true) {
let idx = idxs.shift()
if (typeof idx == "undefined") {
break
}
if (idx == 0 && i == 0) {
dStr = "window.d"
}
if (idx == 0 && i > 0) {
dStr += `.chiled[${idx}]`;
}
i++;
}


const [data, setData] = useState(d);
if (typeof value == "number") {
dStr += `.${name}=${value}`;
} else if (typeof value == "string") {
dStr += `.${name}="${value}"`;
} else if (typeof value == "object") {
let s = JSON.stringify(value);
dStr += `.${name}= JSON.parse(\`${s}\`)`;
}


useEffect(() => {
init().then(() => {
// greet("Hello Tianya");
})
}, [])
console.log(window.d);
console.log(dStr);

eval(dStr);
}

function App() {

const [data, setData] = useState(window.d);


function TreeNode(props) { function TreeNode(props) {
console.log(props);
console.log("xx");
// 这里需要把属性分离出状态
const [idHash, setIdHash] = useState(new Date().getTime() + Math.round(Math.random() * 10000)) const [idHash, setIdHash] = useState(new Date().getTime() + Math.round(Math.random() * 10000))
const [nodeField, setNodeField] = useState(props.data.field) const [nodeField, setNodeField] = useState(props.data.field)
const [nodeRequired, setNodeRequired] = useState(props.data.required) const [nodeRequired, setNodeRequired] = useState(props.data.required)
@@ -91,8 +119,8 @@ function App() {


// 这里只有子集变化了才更新 // 这里只有子集变化了才更新
const listItems = useMemo(() => { const listItems = useMemo(() => {
return nodeChiled.map((item) =>
<TreeNode data={item}></TreeNode>
return nodeChiled.map((item, i) =>
<TreeNode data={item} index={props.index + "-" + i} key={i}></TreeNode>
) )
}, [nodeChiled]) }, [nodeChiled])


@@ -100,14 +128,30 @@ function App() {
function handleOnClick() { function handleOnClick() {
if (nodeRequired == 0) { if (nodeRequired == 0) {
setNodeRequired(1) setNodeRequired(1)
updateData(props.index, "required", 1);
} else { } else {
setNodeRequired(0) setNodeRequired(0)
updateData(props.index, "required", 0);
} }
} }


// 增加子节点
function handleOnAdd() {
let newItem = {
field: '未命名',
required: 1,
chiled: [
]
};

let newNodeChiled = nodeChiled.concat(newItem);
setNodeChiled(newNodeChiled);
updateData(props.index, "chiled", newNodeChiled);
}

return ( return (
<div id={idHash} style={{ marginLeft: "30px" }}> <div id={idHash} style={{ marginLeft: "30px" }}>
<h2>{nodeField}<a onClick={handleOnClick}>[{nodeRequired}]</a></h2>
<h2>{nodeField}<a onClick={handleOnClick}>[{nodeRequired}]</a> <a style={{ color: "blue", cursor: "pointer" }} onClick={handleOnAdd}>+</a></h2>
<div>{listItems}</div> <div>{listItems}</div>
</div> </div>
); );
@@ -117,7 +161,7 @@ function App() {
<div className="App"> <div className="App">
<h1>Node</h1> <h1>Node</h1>
<hr></hr> <hr></hr>
<TreeNode data={data}></TreeNode>
<TreeNode data={data} index={"0"}></TreeNode>
</div> </div>
); );
} }


Loading…
Cancel
Save