Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.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
Reactjs 更改视图缺少选定值时作出反应选择_Reactjs_React Select - Fatal编程技术网

Reactjs 更改视图缺少选定值时作出反应选择

Reactjs 更改视图缺少选定值时作出反应选择,reactjs,react-select,Reactjs,React Select,如何通过react select async保持所选选项?我的意思是,当我返回到使用AsyncSelect的部分时,我看到占位符和加载选项再次触发(从API获取所有值)选定值,以下组件位于一个具有多个步骤的表单中。如何保持选定的值。这是我的AsyncDropDown.js: <AsyncSelect styles={customStyles} cacheOptions loadOptions={loadOptions}

如何通过react select async保持所选选项?我的意思是,当我返回到使用AsyncSelect的部分时,我看到占位符和加载选项再次触发(从API获取所有值)选定值,以下组件位于一个具有多个步骤的表单中。如何保持选定的值。这是我的AsyncDropDown.js:

<AsyncSelect
            styles={customStyles}
            cacheOptions
            loadOptions={loadOptions}
            defaultOptions
            onChange={handleChange}
            isRtl={true}
            isSearchable={false}
            classNamePrefix='myDropDown'
            placeholder={'(پیش فرض گروه فعال)'}
        />
这是
handlechange
函数:

const loadOptions = (selectedOption, callback) => {
        let token = localStorage.getItem('Token')
        let udid = localStorage.getItem('UUID')
        let xml = `body of request`;
        axios.post('myurl.com', xml, { headers: { 'Content-Type': 'text/xml;charset=UTF-8' } }).then(function (response) {
            //console.log(response)
            var options = {
                attributeNamePrefix: "@_",
                attrNodeName: "attr", //default is 'false'
                textNodeName: "#text",
                ignoreAttributes: true,
                ignoreNameSpace: false,
                allowBooleanAttributes: false,
                parseNodeValue: true,
                parseAttributeValue: false,
                trimValues: true,
                cdataTagName: "__cdata", //default is 'false'
                cdataPositionChar: "\\c",
                localeRange: "", //To support non english character in tag/attribute values.
                parseTrueNumberOnly: false,
                attrValueProcessor: a => he.decode(a, { isAttributeValue: true }),//default is a=>a
                tagValueProcessor: a => he.decode(a) //default is a=>a
            };
            // Intermediate obj
            var tObj = parser.getTraversalObj(response.data, options);
            var jsonObj = parser.convertToJson(tObj, options);

            if (jsonObj["soap:Envelope"]["soap:Body"].GetAllCategoriesResponse.GetAllCategoriesResult["diffgr:diffgram"].DocumentElement != null) {
                var jsonDropDownDetails = jsonObj["soap:Envelope"]["soap:Body"].GetAllCategoriesResponse.GetAllCategoriesResult["diffgr:diffgram"].DocumentElement.CATEGORY
                jsonDropDownDetails.map(item => {
                    const data = { value: item.CATEGORYNAME, label: item.CATEGORYNAME, index: item.CATEGORYID }
                    setDropDownOptions(dropDownOptions.push(data))
                })
                callback(dropDownOptions)
            }
            setIsLoading(false)
        }).catch(function (error) {
            console.log("erorr in DropDown : " + error)
        })
    };
   const handleChange = selectedOption => {
        setSelectedOption(selectedOption)
        props.parentCallBack(selectedOption)

    };

这是异步下拉组件在主视图中使用此组件时,在主视图中转到下一个视图并返回主视图缺少选定值并再次显示占位符和调用loadOptions函数并调用API。如何解决此问题?

为了在单击“下一步”或“上一步”时保留表单字段的值:

  • 创建一个主表单组件,如
    MasterForm
    ,并呈现表单步骤,如
    Step1
    Step2
    (保存输入字段等)
  • MasterForm
    中维护
    select
    ,并在表单步骤中维护
    onchangeholders
我创建了一个

母版:

。。。
render(){
返回(
{
this.setState({step1SelectValue:e});
}}
currentStep={this.state.currentStep}
/>
{
this.setState({step2SelectValue:e});
}}
currentStep={this.state.currentStep}
/>
{this.previousButton()}
{this.nextButton()}
);
}
...
Step1.js

。。。

如果您不想执行<代码> LoopEdvs<代码>函数,请重新考虑使用。请注意,UseMoom在功能组件中可用

为了在单击/下一步或上一步时保留表单字段的值:

  • 创建一个主表单组件,如
    MasterForm
    ,并呈现表单步骤,如
    Step1
    Step2
    (保存输入字段等)
  • MasterForm
    中维护
    select
    ,并在表单步骤中维护
    onchangeholders
我创建了一个

母版:

。。。
render(){
返回(
{
this.setState({step1SelectValue:e});
}}
currentStep={this.state.currentStep}
/>
{
this.setState({step2SelectValue:e});
}}
currentStep={this.state.currentStep}
/>
{this.previousButton()}
{this.nextButton()}
);
}
...
Step1.js

。。。

如果您不想执行<代码> LoopEdvs<代码>函数,请重新考虑使用。请注意,UseMoom在功能组件中可用