@alifd/field
Version:
Fields can be used to manage data when it comes to form data manipulation and validation. After being associated with a component, the form data can be automatically written back, read, and verified.
94 lines (80 loc) • 2.52 kB
Markdown
---
title: 结构化解析 - Parse Array or Object
order: 11
---
把 `init('obj.b')` 的数据转换成 `obj={obj:{b:'value'}}`;
把 `init('arr.0')` 的数据转换成 `obj={arr:['']}`;
---
from `init('obj.b')` to `obj={obj:{b:'value'}}`;
from `init('arr.0')` to `obj={arr:['']}`;
```jsx
import ReactDOM from 'react-dom';
import React from 'react';
import { Input, Button } from '@alifd/next';
import Field from '@alifd/field';
class App extends React.Component {
field = new Field(this, {
parseName: true,
values: {
objWithDefaults: {
a: 1,
b: 2,
},
},
});
onGetValue() {
console.log(this.field.getValues());
}
onSetValue() {
this.field.setValues({
obj: {
b: 'b',
c: 'c',
},
arr: ['first', 'second'],
objWithDefaults: {
a: 100,
b: 200,
},
});
}
render() {
const { init, reset, resetToDefault } = this.field;
return (
<div className="demo">
<h3>Object transfer</h3>
obj.b: <Input {...init('obj.b', { initValue: 'test1' })} />
obj.c: <Input {...init('obj.c', { initValue: 'test2' })} />
<br />
<h3>Array transfer</h3>
arr.0: <Input {...init('arr.0', { initValue: '0' })} />
arr.1: <Input {...init('arr.1', { initValue: '1' })} />
<br />
<br />
<h3>Object with Defaults</h3>
objWithDefaults.a: <Input {...init('objWithDefaults.a')} />{' '}
objWithDefaults.b:{' '}
<Input {...init('objWithDefaults.b')} />
<br />
<br />
result:
<pre>{JSON.stringify(this.field.getValues(), null, 2)}</pre>
<br />
<br />
<Button type="primary" onClick={this.onGetValue.bind(this)}>
getValues
</Button>
<Button onClick={this.onSetValue.bind(this)}>setValues</Button>
<Button onClick={() => reset()}>reset</Button>
<Button onClick={() => resetToDefault()}>resetToDefault</Button>
</div>
);
}
}
ReactDOM.render(<App />, mountNode);
```
```css
.demo .next-btn {
margin-right: 5px;
}
```