如果this.state.number
等于数组中的数字,则触发此函数时会出现问题。
delay = async () => {
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms))
await sleep(1000);
return <Redirect to="/dashboard" />
}
错误
不变冲突:对象作为React子级无效(发现:对象承诺)。如果您打算呈现一个子级集合,请改用数组。
Home.js
import React, {Component} from 'react';
import {Redirect} from "react-router-dom";
import Grid from '@material-ui/core/Grid';
import './App.css';
import { withRouter } from 'react-router-dom'
class Home extends Component {
state = {
number: "",
numbers: ["111-111-1112, 111-111-1111, 111-111-1116, 111-111-1118"]
};
onChange = e => {
e.preventDefault();
this.setState({
number: e.target.value
});
};
delay = async () => {
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms))
await sleep(1000);
return <Redirect to="/dashboard" />
}
validate = myNum => this.state.numbers.find(num => num === myNum);
render(){
const validatedNumber = (
<div>
<span style={{ color: "green" }}>Activated ✅ </span>
{this.delay()}
</div>
);
return (
<div className="main">
<Grid container >
<Grid item sm={8} md={12} >
<input
type="text"
placeholder="Validate Number"
value={this.state.number}
onChange={this.onChange}
/>
<h2>
{this.validate(this.state.number) ? (
validatedNumber
) : (
<div>Not in the system</div>
)}
</h2>
</Grid>
</Grid>
</div>
);
}
}
export default Home;
https://stackoverflow.com/questions/56779232
复制相似问题