【发布时间】:2020-06-28 19:57:59
【问题描述】:
基本上,我是在询问我在标题中输入的内容。我有一个相邻的跨度和按钮,并且 onclick 我希望该按钮能够隐藏跨度或将其从状态中完全删除。 This is what the page looks like with the button next to the span (UPDATED) 这是我的代码
import React, {useState} from "react";
import { NavLink } from "react-router-dom";
import {Button} from "react-bootstrap";
const SavedStrain = (props) => {
console.log(props.savedList);
const editResponse = () => {
}
const removeResponse = () => {
const removeFromSavedList = props.removeFromSavedList;
//removeFromSavedList()
}
console.log(props)
return (
<div className="saved-list">
<h3> Saved Strains: </h3>
{props.savedList.map(strain => (
<div>
<NavLink to={`/strains/${strain}`}>
<span className='name'> {strain} </span>
</NavLink>
<Button className='delete' onClick={removeResponse}>Delete</Button>
</div>
))}
</div>
)
}
export default SavedStrain;
这是我的组件 removeFromSavedList 所在的位置。
import React, {useEffect, useState} from 'react';
import { Route, Link } from 'react-router-dom';
import axios from 'axios';
import UserCreation from './components/UserCreation';
import Login from "./components/Login";
import StrainCard from './components/StrainCard';
import { Container } from "reactstrap";
import NavBarComponent from "./components/NavBarComponent";
import SavedStrain from './components/SavedStrain';
import Strain from './components/Strain';
import StrainDetails from './components/StrainDetails';
function App(props) {
const [strains, setStrains] = useState([]);
const [strain, setStrain] = useState([]);
const [savedList, setSavedList] = useState([]);
useEffect(() => {
const getStrains = () => {
axios
.get('http://strainapi.evanbusse.com/CEIl7eN/strains/search/all')
.then(response => {
setStrains(response.data);
})
.catch(error => {
console.error('Server Error', error.response);
});
}
getStrains();
}, []);
console.log(strains)
useEffect(() => {
setStrain(Object.keys(strains).slice(0, 20))
}, [strains])
const addToSavedList = strain => {
setSavedList([...savedList, strain]);
console.log(savedList);
};
const removeFromSavedList = (strain) => {
setSavedList(savedList.filter(element => element !== strain))
}
const editSavedStrain = (event) => {
event.preventDefault();
setSavedList(strain === event.target.value)
}
return (
<Container className="App">
<NavBarComponent />
<Route exact path='/'>
<Link to='/login'>Log in</Link>
</Route>
<Route exact path='/login'>
<Login />
</Route>
<Route exact path='/signup'>
<UserCreation />
</Route>
<Route exact path='/strains' render= { () => <StrainCard strains={strains} />} />
<Route exact path='/strains/:strain' render = {(props) => <StrainDetails {...props} strains={strains} addToSavedList={addToSavedList} savedList={savedList} />} />
<Route exact path='/savedstrains' render = {(props) => <SavedStrain {...props} savedList={savedList} removeFromSavedList={removeFromSavedList} editSavedStrain={editSavedStrain} /> } />
</Container>
);
}
export default App;
【问题讨论】:
-
我注意到
removeFromSavedList()被评论了,看来这就是你所需要的。有问题吗? -
是的,我尝试将应变放入 removeFromSavedList 的参数中,但应变未定义。查看我上传的道具图片
-
我基本上只需要一种方法来调用每个单独的跨度,这样我就可以在 removeResponse 函数中实现它。类名“名称”不起作用,因为它只会删除所有跨度(我认为)
-
您的屏幕截图已将 savedList 显示为空。所以,基本上你不会得到任何列表。你到底想发生什么?
-
对不起,那是不正确的。我更新了图像。我希望能够在单击删除按钮时删除跨度(并希望也可以使用跨度删除该按钮)
标签: reactjs onclick react-functional-component