使用按钮元素 onClick 的值更新状态
Update state with value from button element onClick
下面有一些代码,我在 parent 组件中将大小的状态声明为空字符串。
我想做的是创建一个处理程序函数,它将获取按钮 onClick 的 innerText 并使用该值更新大小状态。
import { Child } from './Child';
import React, { useState } from 'react';
export default function Parent() {
const [state, setState] = useState({
name: 'bob',
size: '',
});
const handleSize = (e) => {
setState((state) => ({
...state,
size: e.target.innerText,
}));
};
return (
<Child
size={state.size}
onClick={handleSize}
/>
);
}
这是带有按钮的 child 组件,其 innerText 为 500。- 我只是想将大小状态设置为按钮元素内的任何值,但这似乎不起作用。
EDIT1:更新代码以将大小发送到 child。
EDIT2:当前代码抛出类型错误:'无法读取 属性 'innerText' of null' 这是因为获取 JSX 元素的 innerText 不同于 HTML 元素吗?
EDIT3:我已经在下面回答了我自己的问题。我的处理函数需要调整。
export const Child = ({
size,
onClick,
}) => {
return (
<div>
<button onClick={onClick}>500</button>
</div>
);
};
尝试:
const handleSize = (e) => {
setState((state) => ({
...state,
size: e.target.innerText,
}))
}
https://reactjs.org/docs/hooks-reference.html#functional-updates
好的,问题找到了,我的处理函数需要一些调整。
const handleSize = (e) => {
const { value } = e.target;
setState((state) => ({
...state,
size: value,
}));
};
我决定使用值而不是使用按钮的 innerText。
const { value } = e.target; //assigns the target value to my size property
下面是更新后的按钮,其静态值为“500”。 handleSize 函数将使用按钮的指定值更新 onClick 的大小。
export const Child = ({
size,
onClick,
}) => {
return (
<div>
<button value="500" onClick={onClick}>500</button>
</div>
);
};
下面有一些代码,我在 parent 组件中将大小的状态声明为空字符串。
我想做的是创建一个处理程序函数,它将获取按钮 onClick 的 innerText 并使用该值更新大小状态。
import { Child } from './Child';
import React, { useState } from 'react';
export default function Parent() {
const [state, setState] = useState({
name: 'bob',
size: '',
});
const handleSize = (e) => {
setState((state) => ({
...state,
size: e.target.innerText,
}));
};
return (
<Child
size={state.size}
onClick={handleSize}
/>
);
}
这是带有按钮的 child 组件,其 innerText 为 500。- 我只是想将大小状态设置为按钮元素内的任何值,但这似乎不起作用。
EDIT1:更新代码以将大小发送到 child。
EDIT2:当前代码抛出类型错误:'无法读取 属性 'innerText' of null' 这是因为获取 JSX 元素的 innerText 不同于 HTML 元素吗?
EDIT3:我已经在下面回答了我自己的问题。我的处理函数需要调整。
export const Child = ({
size,
onClick,
}) => {
return (
<div>
<button onClick={onClick}>500</button>
</div>
);
};
尝试:
const handleSize = (e) => {
setState((state) => ({
...state,
size: e.target.innerText,
}))
}
https://reactjs.org/docs/hooks-reference.html#functional-updates
好的,问题找到了,我的处理函数需要一些调整。
const handleSize = (e) => {
const { value } = e.target;
setState((state) => ({
...state,
size: value,
}));
};
我决定使用值而不是使用按钮的 innerText。
const { value } = e.target; //assigns the target value to my size property
下面是更新后的按钮,其静态值为“500”。 handleSize 函数将使用按钮的指定值更新 onClick 的大小。
export const Child = ({
size,
onClick,
}) => {
return (
<div>
<button value="500" onClick={onClick}>500</button>
</div>
);
};