reactjs - 将 React TypeScript 转换为 React js
问题描述
我是编码新手,我想知道是否有人可以告诉我如何将Sandbox 上共享的代码从“React TypeScript”转换为“React js”。
import * as React from "react";
import { render } from "react-dom";
import {TreeView, TreeItem, TreeItemProps, TreeViewProps} from "@material-ui/lab"
import ExpandMoreIcon from "@material-ui/icons/ExpandMore";
import ChevronRightIcon from "@material-ui/icons/ChevronRight";
function TreeItemX(props:TreeItemProps &{iconClickOnly:boolean}){
// todo should call the original
const handler:TreeItemProps['onLabelClick'] = evt => evt.preventDefault();
const {iconClickOnly,...others} = props;
const handledProps:TreeItemProps ={
...others,
[props.iconClickOnly?'onLabelClick':'onIconClick']:handler
}
return <TreeItem {...handledProps} />
}
function TreeViewX(props:TreeViewProps&{defaultPreventedPrevents:boolean}){
const {defaultPreventedPrevents,...others} = props;
const originalOnNodeSelect = props.onNodeSelect;
const preventingOnNodeSelect = (evt:React.ChangeEvent<{}>, nodeId:string&string[]) => {
if(defaultPreventedPrevents){
if(!evt.defaultPrevented){
originalOnNodeSelect?.(evt,nodeId)
}
}else{
if(evt.defaultPrevented){
originalOnNodeSelect?.(evt,nodeId)
}
}
}
return <TreeView {...others} onNodeSelect={preventingOnNodeSelect}/>
}
function App(){
const [selected,setSelected] = React.useState<string>('')
return (
<TreeViewX
defaultPreventedPrevents={true}
defaultCollapseIcon={<ExpandMoreIcon />}
defaultExpandIcon={<ChevronRightIcon />}
selected={selected}
onNodeSelect={(_,id)=>{
setSelected(id);
}}>
<TreeItemX iconClickOnly nodeId='parent' label='Parent'>
<TreeItemX iconClickOnly nodeId='child' label='Child'/>
</TreeItemX>
</TreeViewX>
);
}
render(<App />, document.getElementById("root"));
先感谢您。
解决方案
一个好的开始是删除类型,例如:
function TreeItemX(props){
const handler = evt => evt.preventDefault();
const { iconClickOnly, ...others } = props;
const handledProps ={
...others,
[props.iconClickOnly ? 'onLabelClick' : 'onIconClick']
}
return <TreeItem {...handledProps} />
}
继续这样做,直到你的 React 代码中没有类型。
推荐阅读
- ios - 如何从 UITableView 部分获取选定的 UISwitch 标签?
- javascript - 使用相同的类 jQuery 在单击事件上仅显示一个打开的 DIV
- python - 如何使用 Pandas python 仅显示来自 csv 文件的列的头部
- python - 如何处理熊猫数据框中的列?
- java - 每当页面重新加载时如何使用tomcat身份验证
- c++ - 如何在 Driver.c controlFunction 接收使用 DeviceIoControl 发送的数据?IOCTL,驱动程序
- ios - IOS UITextField自定义键盘不会被dealloc
- google-cloud-platform - Google Cloud Vision AI 如何从提供的图像范围中选择相似的图像
- postgresql - 如何组合自定义定义的变量并将它们显示为 postgres 中表的记录
- regex - 如何使用正则表达式仅提取两个字段