【发布时间】:2020-07-24 15:48:23
【问题描述】:
我有一个父组件“HOME”和用于创建新池的表单。我将池数组和 setState 函数发送到子组件。如果我不刷新页面,父组件将不会呈现新池。
“家”
export default function Home() {
const [user, setUser] = useState({});
const [lists, setLists] = useState([]);
useEffect(() => {
if (!user.id) {
async function fetchUser() {
await axios.get('/api/user/')
.then(async data => {
!!data.data ? (setUser(data.data), setLists(data.data.pools)) : await createUser()
}
);
}
async function createUser() {
await axios.post('/api/user/')
.then(data => { setUser(data.data) });
}
fetchUser();
}
}, [])
if (user.name) {
return (
<div>
<center><header> Welcome to MyShopper!</header></center>
<NewPool setter={() => setLists} poolsArr={lists} />
{lists.length > 0 &&
lists.map(pool => (
<div id='pools_list' key={pool.id}>
<Pools poolInfo={pool} />
</div>))
}
</div>
)
} else {
return (
<p>Loading...</p>
)
}
}
“POOL”(孩子)
import axios from 'axios';
export default function NewPool(props){
const [name,setName]=useState(null);
const pools=props.poolsArr;
const setPool=props.setter;
async function onClickHandler(event){
event.preventDefault();
await axios.post('/api/pool/',{poolName:name})
.then(pool=>{()=>setPool([...pools,pool.data])});
}
function onChangeEv(event){
setName(event.target.value);
}
return(
<form onSubmit={onClickHandler}>
<input type="text" id = "name" name="name"
onChange={onChangeEv}/>
<input type="submit" value="AddPool"/>
</form>
)
}
我知道如何使用 Redux 修复它。在这里我想更好地理解 React Hooks。这是bind 的问题吗?
如果有任何建议,我将不胜感激! 谢谢!
【问题讨论】:
标签: javascript reactjs react-hooks