【发布时间】:2019-10-09 09:36:47
【问题描述】:
我有一个表单,完成后会呈现一个带有表单数据的按钮。 该表单接受两个输入:1. 标题(按钮中呈现的文本)和 2.) 按钮的 URL。
如果我粘贴 URL,该表单将与条件语句一起使用。但是,如果我开始手动输入 URL,它会根据我输入的第一个字符生成按钮,因为字符串不再为空。
export default class URLButton extends Component {
constructor(props) {
super(props)
this.state = {
links: [],
url: '',
title: ''
}
}
// onChange
onChange = (e) => {
e.preventDefault(e)
this.setState({
[e.target.name]: e.target.value
})
}
// onSubmit
onSubmit = e => {
e.preventDefault()
}
render() {
if (this.state.url === "") {
return (
<>
<form onClick={this.onSubmit}>
<input
name="title"
type="text"
placeholder="add button text"
onChange={e => this.setState({ title: e.target.value })}
/>
<input
name="url"
type="url"
placeholder="your-link.com"
onChange={e => this.setState({ url: e.target.value })}
/>
<br />
</form>
<button type="submit">Submit</button>
</>
)
} else {
return (
<>
<div>
<a href={this.state.url} className="link-button" target="_blank" rel="noopener noreferrer">{this.state.title}</a>
</div >
</>
)
}
}
}
由于 onChange 和 onSubmit 函数有效,我已将其缩小到条件语句 if (this.state.url === "") {... 我尝试将其设置为 null 和 false 而不是空字符串,但表单不呈现如果我尝试这些陈述。
【问题讨论】:
-
<form onClick={this.onSubmit}>你是说onSubmit={this.onSubmit}吗?
标签: reactjs