首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >基于支持文本匹配的ReactJS集选择选项

基于支持文本匹配的ReactJS集选择选项
EN

Stack Overflow用户
提问于 2019-01-03 04:31:17
回答 1查看 573关注 0票数 1

我试图从url中获取查询参数,并使用这些值在加载时设置所选的选项值。目前,我可以访问两个匹配的值,即选项文本和查询参数值。

我最初的想法是在我的循环中添加一个变量,该变量由一个if语句设置,该语句检查循环值是否与查询支持值匹配,但我得到了一个关于意外令牌的错误消息。这个设置可能有什么问题,还有一个更好的方法来设置这个评估,并在页面加载时将"select“设置为适当的选项?

以下是完整的错误消息({selected}是发生错误的地方):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ERROR in ./public/components/app/activity-feed/search-form.js
Module build failed: SyntaxError: Unexpected token, expected ... (45:102)

  43 |                                                         selected = 'selected';
  44 |                                                     }
> 45 |                                                     return ( <option value={category.categoryHashId} {selected}>

下面是我的react代码,其中this.props.category是每个类别的is /文本数组,可以查询,this.props.categoryQuery是当前作为查询参数的文本值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<select name="category" className="form-control filter-category">
    { this.props.category.map( (category) => { var selected; if(category.categoryName == this.props.categoryQuery){ selected = 'selected'; } return (
    <option value={category.categoryHashId} {selected}>{category.categoryName}</option> ) } ) }
</select>

例如,this.props.categoryQueryBlog,在8个this.props.category.categoryName数组值中,Blog匹配并添加了一个“选择”字符串。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-03 04:40:39

不能像您正在做的那样为元素编写道具:<tag {someValue}/>

相反,将一个value属性传递给select元素,将一个defaultValue传递给option元素:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const {
    category,
    categoryQuery
} = this.props;
const selectedCategory = category.find((val) => {
    return val.categoryName === categoryQuery;
})

return (
    <select
        name="category"
        className="form-control filter-category"
        value={selectedCategory.categoryHashId}
    >
        {category.map((cat) => {
            return (
                <option
                    key={cat.categoryHashId}
                    defaultValue={cat.categoryHashId}
                >
                    {cat.categoryName}
                </option>
            );
        })}
    </select>
);

Sidenote:如果您有唯一的categoryHashId,则不应该使用categoryName进行标识/比较/选择。当用户选择类别时,请使用此选项而不是名称。为了提高效率,您可能需要查看一下您的数据结构。

我编写这个示例是为了满足您的需要,但是如果在hashId中使用categoryQuery,则可以跳过.find()步骤。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54022351

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文