2015-10-14 63 views
1

当我第二次进入/ view /:id时,我得到了我的组件,它不会检查收音机。我开始在列表组件中使用react-router作为网站的索引,我点击一个元素的视图按钮,收音机被选中,我返回到列表中并转到另一个或相同的元素,并且它不再被检查。当我在React开发工具中检查组件时,收音机具有defaultChecked = true属性。REACT - defaultChecked在第二次加载时不呈现检查属性

import React from 'react'; 
import { connect } from 'react-redux'; 

class LicenseRadios extends React.Component { 
    buildRadios() { 
    let { licenses, activeValue } = this.props; 

    return licenses.map(license => { 
     let checked = false; 

     if(activeValue !== undefined && activeValue === license.id){ 
     checked = true; 
     } 

     return (
     <div key={license.id} className="col l2"> 
      <p> 
      <input name="license" type="radio" id={'licenseRdo_' + license.id} value={license.id} defaultChecked={checked} /> 
      <label htmlFor={'licenseRdo_' + license.id}>{license.label}</label> 
      </p> 
     </div> 
    ); 
    }); 
    } 

    render() { 
    return (
     <div className="row"> 
     {this.buildRadios()} 
     </div> 
    ); 
    } 
} 

export default LicenseRadios; 

我试图改变defaultCheckedchecked属性,但它需要一个onChange事件。我不明白这个问题。有人可以帮我吗?

谢谢

回答

1

defaultChecked道具只在最初的渲染使用。如果您需要在后续渲染中更新该值,则需要使用onChange函数来处理值更改。

查看文档中的controlled components以更好地了解您遇到的问题。