reactjs - React - 将 refs 作为 prop 传递

标签 reactjs

我正在尝试使用 React 来管理复选框。以下代码运行良好,但我想重构 render 方法中的代码,以便它使用 Component。我想将引用传递给该组件,但我不知道该怎么做。

export default class AreRefsAwesomeCheckbox extends Component {
    constructor(props) {
        super(props);
        this.handleInputChange = this.handleInputChange.bind(this);
    }

    handleInputChange() {
        let data = {
            isFeatured: this.refs.check_me.checked
        };
        postJSON('/some/url', data);
    }


    componentDidMount() {
        const data = getJSON('/some/url');
        data.then(object => {
                this.refs.check_me.checked = object.will_i_have_a_nice_checkbox;
            }
        )
    }

    render() {
        return (
            <div>
                <label>
                    <input ref="check_me" type="checkbox" 
                           onChange={this.handleInputChange}/>
                    <div>Are refs good?</div>
                </label>

            </div>
        );
    }
}

我正在考虑这样的事情

const Checkbox = ({myRef, changeInput, checkboxText}) => {
    return (
        <label>
            <input type="checkbox" ref={myRef} onChange={(event) => changeInput(event)}/>
            <div> {checkboxText} </div>
        </label>)
};

然后将此代码片段放入渲染方法中

<Checkbox myRef="check_me" changeInput={this.handleInputChange} checkboxText="Are refs good?"/>

这显然行不通。我该怎么做呢?

最佳答案

使用createRefuseRef创建您最终传递的引用。

如果您要将引用传递给函数组件,请使用 React.forwardRef .

如果您将 ref 传递给类组件,请确保 prop 名称是除 ref 之外的任何名称,否则您将得到 special prop警告。

关于reactjs - React - 将 refs 作为 prop 传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47719113/

相关文章:

css - 如何改变Ant-Design 'Select'组件的样式?

javascript - 使用 React 显示 HTML 格式的文本时出现不变冲突错误

node.js - 如何将配置选项传递给yarn/npm

javascript - 为什么我的状态在 React.js 中没有更新

javascript - 在 ReactJS 组件中定义事件处理程序的正确方法是什么?

javascript - 如何在 typescript 中编写子类(React.Component)的类型定义?

android - 在不重新启动应用程序的情况下将 native 应用程序 LTR 更改为 RTL 更改

javascript - 带有 MUI 的渐变跟踪按钮

linux - virtualbox debian 中的共享文件夹中的 create-react-app 无法正常工作 - 符号链接(symbolic link)错误

reactjs - react Dropzone 问题 : children is not a function