React事件的正确类型是什么.最初我只是any
为了简单起见而使用.现在,我正在努力清理并避免any
完全使用.
所以用这样一个简单的形式:
export interface LoginProps {
login: {
[k: string]: string | Function
uname: string
passw: string
logIn: Function
}
}
@inject('login') @observer
export class Login extends Component<LoginProps, {}> {
update = (e: React.SyntheticEvent<EventTarget>): void => {
this.props.login[e.target.name] = e.target.value
}
submit = (e: any): void => {
this.props.login.logIn()
e.preventDefault()
}
render() {
const { uname, passw } = this.props.login
return (
<div id='login' >
<form>
<input
placeholder='Username'
type="text"
name='uname'
value={uname}
onChange={this.update}
/>
<input
placeholder='Password'
type="password" …
Run Code Online (Sandbox Code Playgroud) 所以下面的代码是在Angular 4中,我无法弄清楚为什么它没有像预期的那样工作.
这是我的处理程序的片段:
onUpdatingServerName(event: Event) {
console.log(event);
this.newserverName = event.target.value; //this wont work
}
Run Code Online (Sandbox Code Playgroud)
HTML元素:
<input type="text" class="form-control" (input)="onUpdatingServerName($event)">
Run Code Online (Sandbox Code Playgroud)
代码给了我错误:
'EventTarget'类型中不存在属性'value'.
但正如可以看出console.log
,价值确实存在于event.target
.
我想要达到某个元素的父级:
let t = e.target.parentNode
但我有这个错误: Property 'parentNode' does not exist on type 'EventTarget'
我试过<Element>e.target.parentNode
但这也没有给我任何结果.有人可以帮忙吗?
我正在尝试创建一个 onClick 事件类型以在使用 TypeScript 时捕获 React 中的目标属性。但我收到错误“[ts] 属性 'getAttribute' 在类型 'EventTarget' 上不存在。” 任何人都可以帮助提供有关如何解决此问题的最佳实践的见解吗?
我尝试为 event.target 部分使用另一个辅助函数。这样我就可以排版这部分,以及这个函数中的 getAttribute 部分。但是,有人告诉我这不是最佳实践和错误方法。
const Option = (props: OptionProps) => {
const HandleOptionChange = (event: React.MouseEvent<HTMLLIElement>) => {
return props.onOptionChange(event.target.getAttribute('value'));
}
return (
<li
key={props.key}
value={JSON.stringify(props.word)}
onClick={HandleOptionChange}
>
{props.word.value}
</li>
)
}
Run Code Online (Sandbox Code Playgroud)
ts 错误信息:
[ts] 类型“EventTarget”上不存在属性“getAttribute”。任何
我试图让一个扩展面板只有在点击箭头时才展开,但是当我尝试编译它时,这个功能
private _isExpansionIndicator(target: EventTarget): boolean {
const expansionIndicatorClass = 'mat-expansion-indicator';
return (target.classList && target.classList.contains(expansionIndicatorClass) );
}
Run Code Online (Sandbox Code Playgroud)
返回以下错误:
"Property 'classList' does not exist on type 'EventTarget'"
Run Code Online (Sandbox Code Playgroud)
任何线索我如何克服这个错误,或者你知道任何其他解决方法来实现相同的功能吗?
我让它在 stackblitz 上工作,没有错误...... https://stackblitz.com/edit/basic-material-e6sh1r