Reactjs Can';t在React Hook中的onClick函数中设置状态
嗨,我无法使用我为onClick定义的函数在中设置状态。除设置状态外,其他所有线路均正常工作Reactjs Can';t在React Hook中的onClick函数中设置状态,reactjs,react-hooks,Reactjs,React Hooks,嗨,我无法使用我为onClick定义的函数在中设置状态。除设置状态外,其他所有线路均正常工作 export default function SaleProducts(props) { const [currentSelected, setSelected] = useState(props.location.state.pid); useEffect(() => { superagent .post("url") .se
export default function SaleProducts(props) {
const [currentSelected, setSelected] = useState(props.location.state.pid);
useEffect(() => {
superagent
.post("url")
.set("Content-Type","application/x-www-form-urlencoded")
.send({"access_token":token})
.set('accept', 'json')
.end((error, response) => {
if(error){
console.log("Error")
}
else{
var json = response.body;
json.products.map((res) => {
var array = [res.title,"Not yet published",res.variants[0].price,<Button onClick={(event) => handleItemDeletion(event,res.id)}>Delete Item</Button>];
arr.push(array);
})
,[currentSelected]}
const handleItemDeletion = (event,id) =>{
event.preventDefault();
var cSelected = currentSelected.replace(id,'');
setSelected((currentSelected) => cSelected); //this is not working
console.log("Current Selected : ",currentSelected)
}
return(<arr>); //this is only for representation
导出默认功能产品(道具){
const[currentSelected,setSelected]=useState(props.location.state.pid);
useffect(()=>{
超级药剂
.post(“url”)
.set(“内容类型”、“应用程序/x-www-form-urlencoded”)
.send({“访问令牌”:令牌})
.set('accept','json')
.end((错误、响应)=>{
如果(错误){
console.log(“错误”)
}
否则{
var json=response.body;
json.products.map((res)=>{
var数组=[res.title,“尚未发布”,res.variants[0]。price,handleItemDelete(event,res.id)}>Delete Item];
arr.push(阵列);
})
,[currentSelected]}
常量handleItemDelete=(事件,id)=>{
event.preventDefault();
var cSelected=currentSelected.replace(id.);
setSelected((currentSelected)=>CSSelected);//这不起作用
日志(“当前选定:”,当前选定)
}
return();//这仅用于表示
OnClick函数正在被调用,但只有setSelected行不起作用。状态没有改变,仍然像以前一样。您应该将值传递给
setSelected
,而不是函数。类似这样的内容:setSelected(cSelected);
您应该将值传递给setSelected
,而不是一个函数。类似于:setSelected(cSelected);
设置状态不正确。请尝试此操作
export default function SaleProducts(props) {
const [currentSelected, setSelected] = useState(props.location.state.pid);
useEffect(() => {
superagent
.post("url")
.set("Content-Type","application/x-www-form-urlencoded")
.send({"access_token":token})
.set('accept', 'json')
.end((error, response) => {
if(error){
console.log("Error")
}
else{
var json = response.body;
json.products.map((res) => {
var array = [res.title,"Not yet published",res.variants[0].price,<Button onClick={(event) => handleItemDeletion(event,res.id)}>Delete Item</Button>];
arr.push(array);
})
,[currentSelected]}
const handleItemDeletion = (event,id) =>{
event.preventDefault();
var cSelected = currentSelected.replace(id,'');
setSelected(cSelected); // check here
console.log("Current Selected : ",currentSelected)
}
return(<arr>);
导出默认功能产品(道具){
const[currentSelected,setSelected]=useState(props.location.state.pid);
useffect(()=>{
超级药剂
.post(“url”)
.set(“内容类型”、“应用程序/x-www-form-urlencoded”)
.send({“访问令牌”:令牌})
.set('accept','json')
.end((错误、响应)=>{
如果(错误){
console.log(“错误”)
}
否则{
var json=response.body;
json.products.map((res)=>{
var数组=[res.title,“尚未发布”,res.variants[0]。price,handleItemDelete(event,res.id)}>Delete Item];
arr.push(阵列);
})
,[currentSelected]}
常量handleItemDelete=(事件,id)=>{
event.preventDefault();
var cSelected=currentSelected.replace(id.);
setSelected(cSelected);//检查这里
日志(“当前选定:”,当前选定)
}
return();
设置状态不正确。请尝试此操作
export default function SaleProducts(props) {
const [currentSelected, setSelected] = useState(props.location.state.pid);
useEffect(() => {
superagent
.post("url")
.set("Content-Type","application/x-www-form-urlencoded")
.send({"access_token":token})
.set('accept', 'json')
.end((error, response) => {
if(error){
console.log("Error")
}
else{
var json = response.body;
json.products.map((res) => {
var array = [res.title,"Not yet published",res.variants[0].price,<Button onClick={(event) => handleItemDeletion(event,res.id)}>Delete Item</Button>];
arr.push(array);
})
,[currentSelected]}
const handleItemDeletion = (event,id) =>{
event.preventDefault();
var cSelected = currentSelected.replace(id,'');
setSelected(cSelected); // check here
console.log("Current Selected : ",currentSelected)
}
return(<arr>);
导出默认功能产品(道具){
const[currentSelected,setSelected]=useState(props.location.state.pid);
useffect(()=>{
超级药剂
.post(“url”)
.set(“内容类型”、“应用程序/x-www-form-urlencoded”)
.send({“访问令牌”:令牌})
.set('accept','json')
.end((错误、响应)=>{
如果(错误){
console.log(“错误”)
}
否则{
var json=response.body;
json.products.map((res)=>{
var数组=[res.title,“尚未发布”,res.variants[0]。price,handleItemDelete(event,res.id)}>Delete Item];
arr.push(阵列);
})
,[currentSelected]}
常量handleItemDelete=(事件,id)=>{
event.preventDefault();
var cSelected=currentSelected.replace(id.);
setSelected(cSelected);//检查这里
日志(“当前选定:”,当前选定)
}
return();
是的,这解决了问题。谢谢。但我在其他地方也用过类似的方法,而且通常有效。是的,这解决了问题。谢谢。但我在其他地方也用过类似的方法,而且通常有效。