如何获取antd组件的ref值?

时间:2018-10-09 17:17:53

标签: javascript reactjs components antd

我尝试使用最新版本的antd(3.10.0)和react(16.5.2)。

我根据https://reactjs.org/docs/refs-and-the-dom.html使用新的ref方式

this.myRef = React.createRef();

撕裂时,应该:

rend(){
                    <Select style={{ width: 200 }} ref={this.myRef}>
                    {Object.entries(this.state.catedict)
                        .map(en => <Option key={en[0]}>{en[1]}</Option>)}
                </Select>
}

但是当我想获取Input或Select的值时

我尝试:

console.log(this.myRef.current.value);

但只会得到错误的结果。

我什至发现:

console.log(this.myRef.current);

结果是:

t {props: {…}, context: {…}, refs: {…}, updater: {…}, saveSelect: ƒ, …}
context: {}
props: {style: {…}, children: Array(2), prefixCls: "ant-select", showSearch: false, transitionName: "slide-up", …}
rcSelect: t {props: {…}, context: {…}, refs: {…}, updater: {…}, onInputChange: ƒ, …}
refs: {}
renderSelect: ƒ (n)
saveSelect: ƒ (n)
state: null
updater: {isMounted: ƒ, enqueueSetState: ƒ, enqueueReplaceState: ƒ, enqueueForceUpdate: ƒ}
_reactInternalFiber: Na {tag: 2, key: null, type: ƒ, stateNode: t, return: Na, …}
__proto__: v

我要提供Select的值。我该怎么办?

2 个答案:

答案 0 :(得分:1)

您可以通过ref获取它,而antd select是rc-select的临时选项,如果您想获取该值,仍然可以通过ref.rcSelect来获取

`the react dom`
<Select ref={r => this.ctryListRef = r} />

`the js code`
console.log(this.ctryListRef.rcSelect.state.value)

通过rcSelect.state.value,您可以获取该值。

此外,您还可以获取antd textArea值,这只是另一种情况〜

答案 1 :(得分:0)

每次更改都保存Select的值!并在需要时使用它。

<Select style={{ width: 200 }} onChange={(value)=>{
    this.selectValue = value;
}}>

并在其他地方使用它:

console.log('Select Value', this.selectValue)