I am trying to create constants in react as follows:
const [firstFocus, setFirstFocus] = React.useState(false);
const [lastFocus, setLastFocus] = React.useState(false);
The constants are being used in the code as follows:
import React, { Component } from 'react'
import axios from 'axios'
import {
Button,
Card,
CardHeader,
CardBody,
CardFooter,
Form,
Input,
InputGroupAddon,
InputGroupText,
InputGroup,
Container,
Col
} from "reactstrap";
class PostForm extends Component {
constructor(props) {
super(props)
this.state = {
email: '',
password: ''
}
}
changeHandler = (e) => {
this.setState({ [e.target.name]: e.target.value })
}
submitHandler = (e) => {
e.preventDefault()
console.log(this.state)
axios.post('https://jsonplaceholder.typicode.com/posts', this.state)
.then(response => {
console.log(response)
})
.catch(error => {
console.log(error)
})
}
render() {
const { email, password } = this.state
**const [firstFocus, setFirstFocus] = React.useState(false);
const [lastFocus, setLastFocus] = React.useState(false);**
return (
<div>
<Col className="ml-auto mr-auto" md="4">
<Card className="card-login card-plain">
<Form onSubmit={this.submitHandler} className="form">
<CardHeader className="text-center">
</CardHeader>
<CardBody>
<InputGroup
className={
"no-border input-lg"
}
>
<InputGroupAddon addonType="prepend">
<InputGroupText>
<i className="now-ui-icons ui-1_email-85"></i>
</InputGroupText>
</InputGroupAddon>
<Input
placeholder="Email"
type="text"
name="email"
value={email}
onChange={this.changeHandler}
// onFocus={() => setFirstFocus(true)}
// onBlur={() => setFirstFocus(false)}
></Input>
</InputGroup>
<InputGroup
className={
"no-border input-lg"
}
>
<InputGroupAddon addonType="prepend">
<InputGroupText>
<i className="now-ui-icons ui-1_lock-circle-open"></i>
</InputGroupText>
</InputGroupAddon>
<Input
placeholder="Password"
type="password"
name="password"
value={password}
onChange={this.changeHandler}
// onFocus={() => setLastFocus(true)}
// onBlur={() => setLastFocus(false)}
></Input>
</InputGroup>
</CardBody>
<CardFooter className="text-center">
<Button
block
className="btn-round"
color="info"
type="submit"
size="lg"
>
Get Started
</Button>
<div className="pull-right">
<h6>
<a
className="link"
href="#pablo"
onClick={e => e.preventDefault()}
>
Need Help?
</a>
</h6>
</div>
</CardFooter>
</Form>
</Card>
</Col>
</div>
)
}
}
export default PostForm
However, when I try to do this I get the following error:
Invalid hook call. Hooks can only be called inside of the body of a
function component.
I created another constant there for email and password and it worked just fine so I'm not sure why my useState constants aren't working. Any help or guidance is much appreciated as I am very new to react. Thanks!
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…