Browse Source

Update App.js

dev
tianya 2 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 init, { greet } from "knmodel";
import React, { useEffect, useState, useMemo } from 'react';
import React, { useState, useMemo } from 'react';

var d = {
// 默认规则数据
window.d = {
field: '就诊卡号11',
required: 1,
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) {
console.log(props);
console.log("xx");
// 这里需要把属性分离出状态
const [idHash, setIdHash] = useState(new Date().getTime() + Math.round(Math.random() * 10000))
const [nodeField, setNodeField] = useState(props.data.field)
const [nodeRequired, setNodeRequired] = useState(props.data.required)
@@ -91,8 +119,8 @@ function App() {

// 这里只有子集变化了才更新
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])

@@ -100,14 +128,30 @@ function App() {
function handleOnClick() {
if (nodeRequired == 0) {
setNodeRequired(1)
updateData(props.index, "required", 1);
} else {
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 (
<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>
);
@@ -117,7 +161,7 @@ function App() {
<div className="App">
<h1>Node</h1>
<hr></hr>
<TreeNode data={data}></TreeNode>
<TreeNode data={data} index={"0"}></TreeNode>
</div>
);
}


Loading…
Cancel
Save