小编Chi*_*uin的帖子

ReactJS - 管理的复选框组

作为一种帮助我学习ReactJS的方法,我正在设置一些真正应该容易的东西,但事实证明这对我来说有些棘手.

我想在ReactJS中设置一些托管的复选框组.在HTML中,复选框"字段"实际上由许多共享共同NAME属性的input type ="checkbox"元素组成.据我了解,这只是一种应该符合ReactJS组成性质的UI元素.

我有两个ReactJS组件:

首先,CheckboxField用于复选框组中的每个条目 - 即每个输入类型="复选框"HTML元素.

其次,CheckboxFieldGroup用于每组复选框条目 - 即每组HTML元素共享一个共同的NAME属性.CheckboxFieldGroup组件根据传递给它的初始props创建了许多CheckboxField组件.

State在CheckboxFieldGroup组件中进行管理,而不是在单个CheckboxField级别进行管理.从我所读到的,你应该把状态作为最有意义的水平来管理.对我而言,将它放在CheckboxFieldGroup级别更有意义.

当CheckboxFieldGroup首次运行时,它的初始状态将作为一个数组从其最初的props,也是一个数组创建.render方法(实际上是renderChoices方法)遍历其状态数组,并将每个状态成员的属性向下传递给CheckboxField组件,作为后者的props.当用户勾选/取消选中其中一个复选框时,该事件将通过回调传递给其所有者CheckboxFieldGroup的handleChange方法.此方法通过询问其id属性来确定已更改哪个复选框,然后通过setState()调用对CheckboxFieldGroup的状态数组的正确成员进行相应的更改.这会导致CheckboxFieldGroup自动重新呈现,新的状态数组被传递给各个CheckboxField组件,因此'

/** @jsx React.DOM */

var CheckboxField = React.createClass({
    propTypes: {
        values: React.PropTypes.object.isRequired
    },
    getDefaultProps: function () {
        return {
            values: {
                label: "Place holder text"                
            }
        };
    },
    render: function() {
        return (
            <label htlmFor={this.props.values.id}>
                <input type="checkbox"
                    name={this.props.values.name}
                    id={this.props.values.id}
                    value={this.props.values.value}
                    checked={this.props.values.checked}
                    onChange={this.handleChange} />
                {this.props.values.label} <br />
            </label>
        );
    },
    handleChange: function(event) {
        // Should use this to set parent's state via a callback func.  Then the
        // …
Run Code Online (Sandbox Code Playgroud)

reactjs

6
推荐指数
1
解决办法
6342
查看次数

将通用 JS 函数导入 Angular 模块

这里是 Angular/Typescript 的新手。

我已经设置了一个导出的辅助函数 JavaScript 库,我知道这些函数想要导入到 Angular 组件中,并在这些组件的 .html 模板文件中使用。

这是我的 Javascript 库 template-functions/data-types.ts:

export const isNumeric = val => !Array.isArray(val) && (val - parseFloat(val) + 1) >= 0;
Run Code Online (Sandbox Code Playgroud)

这是我导出的一个简单的箭头函数:

以下是我将其导入组件的方法:

import { Component, OnInit, Input } from '@angular/core';
import { MyModel } from '../model/my-model';
import { isNumeric } from '../template-functions/data-types';

@Component({
  selector: 'my-module',
  templateUrl: './my-module.html'
})

export class MyModule implements OnInit {

  @Input() public mymodeldetails: MyModel;

  constructor() { }

  ngOnInit() { }

  // isNumeric = val => !Array.isArray(val) && …
Run Code Online (Sandbox Code Playgroud)

javascript typescript angular

5
推荐指数
1
解决办法
1531
查看次数

标签 统计

angular ×1

javascript ×1

reactjs ×1

typescript ×1