美文网首页
2019-10-14培训管理---考试管理部分注意事项

2019-10-14培训管理---考试管理部分注意事项

作者: 菩灵 | 来源:发表于2019-10-14 19:14 被阅读0次
  • 题库中心页面,题库分类字典的option的value需要请求过来渲染
    学习新知识——添加option的方法是:
    dictTypeOtherList.map
建立连接:
@connect(({dictionary}) => ({dictionary}))

引入option值的列表
const { dictionary:{dictTypeList,dictTypeOtherList}, } = this.props

<FormItem label="检查类型">
        {getFieldDecorator('patrolCheckType', {})(
         <Select placeholder="请选择检查类型" style={{ width: '100%' }} allowClear>
           {dictTypeOtherList.map(item => (
             <Option value={item.value} key={item.value}>
                {item.name}
            </Option>
             ))}
        </Select>
      )}
 </FormItem>

由此可知:dictTypeOtherList是一个数组,里面的每一个对象具有value和name属性

  • 注意return后面接JSX语法的书写形式:


    return接JSX语法的书写原则
  • ant-design的栅格共24份,同一<Row>里面的栅格md等值决定了所占的份数

  • Input框自动获取焦点的属性autoFocus,官方文档竟然没写,webStorm自动提示了这个属性,经测试,确实可以自动获取焦点,使用场景——新建页面或者列表查询页面,编辑页面不适合,因为不能确定用户是否真的需要编辑

  • 空值校验:render: (text) => text || "无" return只有一个语句,可以不加()或者{}

  • 有状态组件向无状态组件过渡步骤:
    1、无状态组件特性:没有自己的状态(state),从父组件继承props,没有生命周期
    2、在方括号中的函数或者变量需要使用const进行定义

  • columns的每一行除了text,record外,还有一个属性是index,从0开始计数,可以render:(text,record,index) => index+1增加序号列(key值可以随便写或者置空,建议置空)--->新思路:给每一行绑定key的时候可以key=index+1,而不需要state中进行双向设置

  • 针对Input和TextArea输入长度的限制,不光可以用validateField表单验证,同时加上maxLength="16"属性进行限制会更加严谨,16针对英文字符和中文字符同样生效

  • 数据库问题汇总:
    1、所有模块删除功能直接传入逗号分隔的字符串无效
    2、提交题库的格式有待确认
    3、查询题库分类KeyWord查到的是题库分类描述而不是题库分类名称
    4、查询题库返回的questionBankId都是null,提交倒是可以正常提交
    5、新建题库页面选择题库种类,需要获取全部题库种类,需要新的接口

  • 注意bug,题库分类默认请求的时候是size=10,current=1,page=x,这对于题库分类列表来说是满足要求的,但是在新增培训的时候,我们需要获取到全部的培训分类值,如何获取total培训分类列表----->传参size=total似乎可以

  • 坑:componentDidMount里面执行的dispatch请求是异步的,有时候页面需要渲染对应值,但是异步跟不上,页面就会首选model文件中state的默认值,如果state上面值的形式对不上,就会undefined阻塞之后的执行,为了防止这个问题,需要在state中设置正确的默认空值的格式,然后在主页面对需要进行渲染的数值做存在校验

  componentDidMount() {
    const { dispatch } = this.props;

    // 获取题库列表
    dispatch({
      type: 'questionBank/fetch',
    });

    // 获取题库分类列表
    dispatch({
      type:'questionBank/fetchQuestionClassifyList'
    })
  }

    questionClassifyObj:{
      records:[]
    }, // 题库分类返回数据

    { questionClassifyObj && questionClassifyObj.records && questionClassifyObj.records.map((item) => (
    <Option value={item.questionBankClassificationId} key={item.questionBankClassificationId}>{item.classificationName}</Option>)) }
  • 表格属性rowKey问题的解决,有些场景不需要在DataSource中为rowKey保留一个字段,可以返回一个函数,用index代替
行不通:不知道这个id是哪来的
<Table columns={columns} dataSource={data} rowKey="id" />
rowKey : record => record.dataIndex,
或者
rowKey : (record,index)=> index
或者:
rowKey={(r,i)=>(i)}
解决:
<Table style={{ marginTop: 20 }} columns={clientColumns} dataSource={logItems} rowKey={(record, index) => index} pagination={false} bordered scroll={{ x: true }} />

Object.keys()方法使用

在实际开发中,我们有时需要知道对象的所有属性,原生js给我们提供了一个很好的方法:Object.keys(),该方法返回一个数组
传入对象,返回属性名
var obj = {'a':'123','b':'345'};
console.log(Object.keys(obj)); //['a','b']

var obj1 = { 100: "a", 2: "b", 7: "c"};
console.log(Object.keys(obj1)); // console: ["2", "7", "100"]

var obj2 = Object.create({}, { getFoo : { value : function () { return this.foo } } });
obj2.foo = 1;
console.log(Object.keys(obj2)); // console: ["foo"]

传入字符串,返回索引
var str = 'ab1234';
console.log(Object.keys(obj)); //[0,1,2,3,4,5]

构造函数 返回空数组或者属性名
function Pasta(name, age, gender) {
this.name = name;
this.age = age;
this.gender = gender;
this.toString = function () {
return (this.name + ", " + this.age + ", " + this.gender);
}
}

console.log(Object.keys(Pasta)); //console: []

var spaghetti = new Pasta("Tom", 20, "male");
console.log(Object.keys(spaghetti)); //console: ["name", "age", "gender", "toString"]

数组 返回索引
var arr = ["a", "b", "c"];
console.log(Object.keys(arr)); // console: ["0", "1", "2"]
————————————————
原文链接:https://blog.csdn.net/u014035151/article/details/53135610

  • 关于正确选项的处理:先给每一个选项增加questionBankQuestionOptionsRight属性,在提交得时候进行遍历,根据值的不同,修改这个属性值,或者根据index或者select${index}直接给对应选项赋值

  • 切换单选、多选和判断的时候,布局清空,state中选项和数据列表重新赋值,页面所有表单数据清空

defaultValue和initialValue不能同时使用

找找看,其他被getFieldDecorator包裹的组件没有有设置defaultValue.包括Select等。有的话都改为initialValue

  • 如果需要设置不同项的state值,需要使用回调函数


    回调函数处理两种数据改变
  • 文件上传限制类型:<input id="fileSelect" type="file" accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" />

  • 限制上传

Valid Accept Types:

For CSV files (.csv), use:

<input type="file" accept=".csv" />

For Excel Files 2003-2007 (.xls), use:

<input type="file" accept="application/vnd.ms-excel" />

For Excel Files 2010 (.xlsx), use:

<input type="file" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />

For Text Files (.txt) use:

<input type="file" accept="text/plain" />

For Image Files (.png/.jpg/etc), use:

<input type="file" accept="image/*" />

For HTML Files (.htm,.html), use:

<input type="file" accept="text/html" />

For Video Files (.avi, .mpg, .mpeg, .mp4), use:

<input type="file" accept="video/*" />

For Audio Files (.mp3, .wav, etc), use:

<input type="file" accept="audio/*" />

For PDF Files, use:

<input type="file" accept=".pdf" /> 

DEMO:
http://jsfiddle.net/dirtyd77/LzLcZ/144/

相关文章

网友评论

      本文标题:2019-10-14培训管理---考试管理部分注意事项

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