Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应选择-我无法确定如何设置默认值_Javascript_Reactjs_React Select - Fatal编程技术网

Javascript 反应选择-我无法确定如何设置默认值

Javascript 反应选择-我无法确定如何设置默认值,javascript,reactjs,react-select,Javascript,Reactjs,React Select,这已经被问了好几次了,很抱歉,但我不能解决这个问题。我读过这些文件,但我找不到任何有效的东西,所以我显然不明白这里发生了什么 class DivisionExtraDetails extends Component { constructor(props) { super(props); this.state = { error: false, loading: true, removing: null, savi

这已经被问了好几次了,很抱歉,但我不能解决这个问题。我读过这些文件,但我找不到任何有效的东西,所以我显然不明白这里发生了什么

class DivisionExtraDetails extends Component {
constructor(props) {
    super(props);

    this.state = {
        error: false,
        loading: true,
        removing: null,
        saving: false,
        geofence: false,
        startTimeOfDay: ''
    };
}

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

    Axios.get(`${API_URL}assetgroups/${division.id}`)
        .then(r => {
            this.setState({
                loading: false,
                geofence: r.data.geofence_assign,
                startTimeOfDay: r.data.day_start
            });
        })
        .catch(err => {
            if (!Axios.isCancel(err)) {
                this.setState({
                    error: true
                });
            }
    });
}


render() {
    const { error, loading, geofence, saving, startTimeOfDay } = this.state;
    const { assignText, division } = this.props;

    const geoFenceOptions = [
        {value: 1, label: 'YES'},
        {value: 0, label: 'NO'},
        {value: null, label: 'Not yet set'},
    ];

    return (
        <React.Fragment>
            <div className="col-5">
             <span>Assign a GeoFence (Yes/No)</span>
               <Select
                 selectedValue={geofence}
                 options={geoFenceOptions}
                 className="basic-multi-select"
                 classNamePrefix="select"
                 onChange={this.handleChange}
               />
            </div>                       
        </React.Fragment>
    );
}
我还尝试了以下变量:

{this.state.geofence}
如果我在dev工具中查看,我可以看到对db的调用正确地填充了状态。 但我不能解决这个问题。如果有人能帮助完成这项看似简单的任务,那就太好了。谢谢。

您在react select中以布尔值或字符串的形式传递值,但您以其选项的形式传递对象,因此react select无法找到“显示默认值”

constructor(props) {
  super(props);

  this.state = {
    // ... code omitted
    geofence: /* set default value here */
  };
}
要解决此问题,您需要在value prop中传递正确的对象,因此请尝试以下操作:-

类详细信息扩展组件{ 构造器{ 超级作物; 此.state={ 错误:false, 加载:对, 删除:null, 储蓄:错, 地理围栏:错, 开始日期:, //将geoFenceOptions设置为state,以便稍后使用 地理围栏选项:[ {value:true,标签:'YES'}, {value:false,标签:'NO'}, {value:null,标签:'尚未设置'}, ]; }; } //根据提供的值查找正确的Geofense选项 getGeoFenceValue=value=>{ 返回this.state.geofengineoptions.findoption=>option.value==value; } 组件安装{ const{division}=this.props; 获取`${API\u URL}assetgroups/${division.id}` .thenr=>{ 这是我的国家{ 加载:false, geofence:this.getGeoFenceValuer.data.geofence\u assign,//调用函数以查找正确的选项 开始日期:r.data.day\u开始 }; } .catcherr=>{ 如果!Axios.iscanceler{ 这是我的国家{ 错误:正确 }; } }; } 渲染{ const{error,loading,geofense,saving,startTimeOfDay,geofenseOptions}=this.state; const{assignText,division}=this.props; 回来 指定地理围栏是/否 ; }
您能告诉我们geofence的控制台日志吗?返回'false'我已更改代码以反映不同的值名称const geoFenceOptions=[{value:true,label:'Yes'},{value:false,label:'N0'},{value:null,label:'Not Not set'},];因此,您将选项作为对象传递,但将react select中的值作为布尔值或字符串传递,这就是它不起作用的原因。尝试将值作为对象传递,如{value:false,label:'N0'}非常感谢。如果我尝试基于API调用动态填充该值,该值会是什么样子?-{value:{geofinence},label:{???}。它已经在那里设置好了,如上面的代码所示。不管怎样,我在“componentDidMount”中执行API调用,将其设置为DB中的正确值。geoFenceOptions是一个对象数组,而您提供的默认值为boolean。显然,这永远不会起作用。更不用说geoFenceOptions中的可用值是1、0和null.这里没有false。谢谢你或你的帮助。我很感激,但是,我仍然无法设置默认值,它仍然没有显示geofence中的值。你是否在react select中传递值属性?我当前使用的是selectedValue={this.state.startTimeOfDay.value}在选择框中。如果我从控制台调用this.state.starTimeOfDay.value,它将返回:00:00:00,这正是我所需要的,但我无法在组件的第一次渲染时加载它。我想知道在从componentDidMount调用DB后的第一次渲染中,我是否应该使用选择组件上的其他属性来设置它??
constructor(props) {
  super(props);

  this.state = {
    // ... code omitted
    geofence: /* set default value here */
  };
}