首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >React:在select中保存映射

React:在select中保存映射
EN

Stack Overflow用户
提问于 2018-06-03 06:06:34
回答 3查看 47关注 0票数 0

请告诉我如何保存option的选定值,在我的select中只保存第一个值(即One).How将选定值保存在select

下面是代码(这是final-form):

代码语言:javascript
复制
export const SelectFilter = props => {
  const { onFilterChange, filterOptions } = props;
  return (
            <Form
              render={({ handleSubmit }) => (
                <form onSubmit={handleSubmit}>
                  <div>
                    <label htmlFor="section">Select:</label>
                    <Field
                       id="section"
                       name="section"
                       component="select"
                       onChange={e => onFilterChange(e)}
                       defaultValue={filterOptions.section}
                    >
                      <option value="one">One</option>
                      <option value="two">Two</option>
                      <option value="three">Three</option>
                    </Field>
                  </div>
                </form>
              )}
            />
  );
};
EN

回答 3

Stack Overflow用户

发布于 2018-06-03 06:19:10

下面是我通常如何处理react中的所有表单。这将允许它可重用,因为它允许您传递提交功能:D如果您确实想要传递onChange功能,那么您也可以传递它

代码语言:javascript
复制
class GalleryFilter extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      currentValue: "one"
    };

    this.onChange = this.onChange.bind(this);
    this.submit = this.submit.bind(this);
  }

  onChange(e) {
    e.preventDefault();
    let {
      value
    } = e.target;
    this.setState({
      currentValue: value
    });
  }

  submit(e) {
    e.preventDefault();
    this.props.Submit(this.state.currentValue);
  }
  render() {
    return ( <
      form onSubmit = {
        this.submit
      } >
      <
      div >
      <
      label htmlFor = "section" > Select: < /label> <
      select id = "section"
      name = "section"
      component = "select"
      onChange = {
        this.onChange
      }
      value = {
        this.state.currentValue
      } >
      <
      option value = "one" > One < /option> <
      option value = "two" > Two < /option> <
      option value = "three" > Three < /option> <
      /select> <
      /div> <
      /form>
    );
  }
}

票数 0
EN

Stack Overflow用户

发布于 2018-06-03 06:46:44

这应该是同样的工作方式。

代码语言:javascript
复制
export const GalleryFilter = props => {
  const { onFilterChange, filterOptions } = props;
  var currentSelection = "one";
  
  function onChange(e)
  {
    e.preventDefault();
    let {value} = e.target;

    currentSelection = value;
    onFilterChange(e);
  }

  return (
            <Form
              render={({ handleSubmit }) => (
                <form onSubmit={handleSubmit}>
                  <div>
                    <label htmlFor="section">Select:</label>
                    <Field
                       id="section"
                       name="section"
                       component="select"
                       onChange={onChange}
                       value={currentSelection}
                    >
                      <option value="one">One</option>
                      <option value="two">Two</option>
                      <option value="three">Three</option>
                    </Field>
                  </div>
                </form>
              )}
            />
  );
};

票数 0
EN

Stack Overflow用户

发布于 2018-06-03 18:24:38

你误解了React最终形式的要点。看起来您正在尝试跟踪在state中手动选择的值,但这正是React Final Form为您做的事情。

如果想要查看select中当前选择的值,可以查看<Form>给出的属性中的values.section

Here's a demo

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

https://stackoverflow.com/questions/50661549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档