美文网首页react
React 列表与表单

React 列表与表单

作者: BlinglingSam | 来源:发表于2021-08-21 21:50 被阅读0次

列表

在React中,拿到一组数据后,一般会用map方法来遍历渲染。

const dataList = [{claimNum: 1}, {claimNum: 2}];
ReactDOM.render(
  <main>
      dataList.length ? (
        dataList.map((item) => {
            return (
              <div className={style['list-content']}>
                <div
                    className={style['claim-number']}
                    onClick={()=>
                      toDetail({
                        typeCode: item.claimTypeCode,
                        claimHeaderId: item.claimHeaderId,
                        entrance: 'WDDJ',
                      })
                    }
                  >{item.claimNum}
                  </div>
                </div>
              );
            })
          ) : (
            <div className={style.noData}>{loading ? null : '未查询到有效数据'}</div>
          )}
  </main>,
  document.getElementById('root')
);

表单

HTML 表单元素与 React 中的其他 DOM 元素有所不同,因为表单元素生来就保留一些内部状态。
在 HTML 当中,像 <input>, <textarea><select> 这类表单元素会维持自身状态,并根据用户输入进行更新。但在React中,可变的状态通常保存在组件的状态属性中,并且只能用 setState() 方法进行更新。

实例

在输入框值发生变化时可以更新 state。可以使用 onChange 事件来监听 input 的变化,并修改 state

export default class Hello extends React.Component {
  constructor(props) {
      super(props);
      this.state = {value: 'Hello!'};
  }
 
  handleChange = (e) => {
    this.setState({value: e.target.value});
  }
  render() {
    var value = this.state.value;
    return (
      <div>
        <input type="text" value={value} onChange={(e)=>this.handleChange} /> 
          <h4>{value}</h4>
     </div>;
    )   
  }
}

select

在 React 中,不使用 selected 属性,而在根select 标签上用value属性来表示选中项。

<select value={this.state.value} onChange={(e)=>this.handleChange}>
     <option value="y">1</option>
     <option value="n">2</option>
</select>

多个表单

处理多个 input 元素时,可以通过给每个元素添加一个 name属性,来让处理函数根据 event.target.name 的值来选择做什么。

class Reservation extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      isGoing: true,
      numberOfGuests: 2
    };
  }
 
  handleInputChange = (event) => {
    const target = event.target;
    const value = target.type === 'checkbox' ? target.checked : target.value;
    const name = target.name;
 
    this.setState({
      [name]: value
    });
  }
 
  render() {
    return (
      <form>
        <label>
          是否离开:
          <input
            name="isGoing"
            type="checkbox"
            checked={this.state.isGoing}
            onChange={(e)=>this.handleInputChange} />
        </label>
        <br />
        <label>
          访客数:
          <input
            name="numberOfGuests"
            type="number"
            value={this.state.numberOfGuests}
            onChange={this.handleInputChange} />
        </label>
      </form>
    );
  }
}

父子组件都使用表单

当你需要从子组件中更新父组件的state 时,你需要在父组件通过创建事件句柄 (handleChange) ,并作为 prop (updateStateProp) 传递到你的子组件上

// 子组件
class Content extends React.Component {
  render() {
    return  <div>
              <button onClick = {this.props.updateStateProp}>点我</button>
              <h4>{this.props.myDataProp}</h4>
           </div>
  }
}
// 父组件
class HelloMessage extends React.Component {
  constructor(props) {
      super(props);
      this.state = {value: 'Hello world!'};
      this.handleChange = this.handleChange.bind(this);
  }
  handleChange(event) {
    this.setState({value: 'hello'})
  }
  render() {
    var value = this.state.value;
    return (
      <div>
        <Content myDataProp = {value} updateStateProp = {this.handleChange}></Content>
      </div>;
    )
  }
}
ReactDOM.render(
  <HelloMessage />,
  document.getElementById('example')
)

相关文章

  • React 列表与表单

    列表 在React中,拿到一组数据后,一般会用map方法来遍历渲染。 表单 HTML 表单元素与 React 中的...

  • React 表单、列表

    列表 【keys】keys可以在DOM中的某些元素被增加或删除的时候帮助React识别哪些元素发生了变化。因此应当...

  • React

    React 表单与事件 React 简单介绍 React 入门实例教程 Github-react-demos 从一...

  • 表单 - Forms

    垂直排列表单 一般输入控件都用 .form-group元素包裹起来 水平排列表单 水平排列表单要给表单添加 .fo...

  • 前端常见面试题目(三)

    1、React的受控组件与非受控组件React 有两种不同的方式来处理表单输入。如果一个 input 表单元素的值...

  • ReactNative

    React Native可伸缩列表封装与快速实现方案 React Native快速封装一个类似qq好友列表的可伸缩...

  • react随笔8 表单

    表单 在HTML表单中,表单元素与React中的其他DOM元素有所不同,因为HTML的表单元素一旦创建就会保留一些...

  • 5-React 组件之表单与受控非受控组件

    React.js [TOC] 表单 在 React 里, HTML 表单元素的工作方式和其他的 DOM ...

  • 第七节:React列表渲染与数据收集

    1. 列表渲染 1.1 列表渲染说明: 列表渲染 先将列表数据转为React元素列表, 然后在渲染 React会将...

  • 第七节:React列表渲染与数据收集

    1. 列表渲染 1.1 列表渲染说明: 列表渲染 先将列表数据转为React元素列表, 然后在渲染 React会将...

网友评论

    本文标题:React 列表与表单

    本文链接:https://www.haomeiwen.com/subject/yrftiltx.html