创建一个自定义 onChange 函数作为 react 组件的参数,它接受 2 个自定义参数
Create a custom onChange function as a parameter for a component in react, which takes 2 custom arguments
这很难用语言来解释,但是如果你看看this sandbox中的代码,你可能会明白。我正在尝试创建此滑块组件,并希望组件的 onChange 函数能够访问滑块的最小值和最大值。
这样您就可以创建滑块,并访问最小值和最大值,例如
<Slider
min={300}
max={3000}
onChange={(nMin, nMax) => {
setNewMin(nMin);
setNewMax(nMax);
}}
/>
这类似于 material ui slider 的 onChange 和 onChangeComitted 函数。我想知道我自己如何创建这样的论点。
总而言之,我想知道如何更新 codesandbox 中的代码,以便可以在 App 组件中访问 newMin 和 newMax。现在 nMin 和 nMax 没有实际赋值。
与任何回调一样,参数由实际调用它的函数决定
function foo(callback){
const a = 1, b = 2, c = {foo:'bar'};
//you determine what arguments are when calling the callback
callback(a , b, c);
}
function myCallback(arg1, arg2, arg3){
console.log('Arg2 =', arg2)
}
foo(myCallback)
因此,将组件的 onChange 属性视为回调。您使用组件中的事件侦听器来调用传递给 props
的回调
简化示例
const Slider = ({value, onChange}) => {
// handles the change on actual element
const handleChange =({target})=>{
if(typeof onChange === 'function'){
// call the callback passing in whatever parameters you decide
// in this simple case just sending numeric value
onChange(target.valueAsNumber)
}
}
return (<input value={value} type="range" onChange={handleChange} min="1" max="10" />);
};
const App = ()=>{
const [val, setVal] = React.useState(4);
// only receives value as documented by the Slider component
const handleChange = (value) => setVal(value);
return (
<div>
<div>Value in App: {val}</div>
<Slider value={val} onChange={handleChange}/>
</div>
)
}
ReactDOM.render(
<App />,
document.getElementById("react")
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.1/umd/react-dom.production.min.js"></script>
<div id="react"></div>
这很难用语言来解释,但是如果你看看this sandbox中的代码,你可能会明白。我正在尝试创建此滑块组件,并希望组件的 onChange 函数能够访问滑块的最小值和最大值。
这样您就可以创建滑块,并访问最小值和最大值,例如
<Slider
min={300}
max={3000}
onChange={(nMin, nMax) => {
setNewMin(nMin);
setNewMax(nMax);
}}
/>
这类似于 material ui slider 的 onChange 和 onChangeComitted 函数。我想知道我自己如何创建这样的论点。
总而言之,我想知道如何更新 codesandbox 中的代码,以便可以在 App 组件中访问 newMin 和 newMax。现在 nMin 和 nMax 没有实际赋值。
与任何回调一样,参数由实际调用它的函数决定
function foo(callback){
const a = 1, b = 2, c = {foo:'bar'};
//you determine what arguments are when calling the callback
callback(a , b, c);
}
function myCallback(arg1, arg2, arg3){
console.log('Arg2 =', arg2)
}
foo(myCallback)
因此,将组件的 onChange 属性视为回调。您使用组件中的事件侦听器来调用传递给 props
的回调简化示例
const Slider = ({value, onChange}) => {
// handles the change on actual element
const handleChange =({target})=>{
if(typeof onChange === 'function'){
// call the callback passing in whatever parameters you decide
// in this simple case just sending numeric value
onChange(target.valueAsNumber)
}
}
return (<input value={value} type="range" onChange={handleChange} min="1" max="10" />);
};
const App = ()=>{
const [val, setVal] = React.useState(4);
// only receives value as documented by the Slider component
const handleChange = (value) => setVal(value);
return (
<div>
<div>Value in App: {val}</div>
<Slider value={val} onChange={handleChange}/>
</div>
)
}
ReactDOM.render(
<App />,
document.getElementById("react")
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.1/umd/react-dom.production.min.js"></script>
<div id="react"></div>