当前位置: 首页 > 知识库问答 >
问题:

Meteor+React如何设置大量输入元素的值并在之后修改它们

燕刚捷
2023-03-14

我对流星和反应很陌生。假设我在react组件中有以下内容:

getMeteorData() {
    var myForm = ProjectForm.findOne({_id:this.props.router.params._id});
    var projects = ProjectForm.find({});
    return {myForm:myForm,projects:projects};
    // doing a console.log(myForm); would give you something like
    /*
    input1:my text 1
    input2:some other text
    input3:something else
    etc....
    */
  },
  renderListProjects() {

    return this.data.projects.map(function(projectform,i) {
      return <li key={"li"+i}><a href={Meteor.absoluteUrl()+'project/' + projectform.username +'/' +projectform._id} key={"a"+i}>Project {projectform._id}</a></li>;
    });
  },
  getInitialState() {
     return Projects.findOne({this.props.router.params._id}, {sort: {createdAt: -1}});
  },
  render() {
    return (
      <div>
      <ul>{this.renderListProjects()}</ul>
      <form>
         <span>Hello this is some text</span>
         <input type="text" ref="input1" />
         <p>Blah blah this is boring</p>
         <input type="text" ref="input2" />
         <img src="image-of-a-kangaroo.png" />
         <input type="text" ref="input3" />
         <ul>
            <li>Buy brocolli</li>
            <li>Buy oregano</li>
            <li>Buy milk</li>
         </ul>
         <input type="text" ref="input4" />
         ...
         <textarea ref="input100"></textarea>
         <input type="text" ref="input101" />
         <p><strong>Yes, I like pizza!</strong>  But my porcupine gets sick eating pizza.</p>
         ...
      </form>
      </div>
    );

所需额外经费

>

  • 如果有人从renderlistprojects单击link1,然后从renderlistprojects单击link2,则表单必须显示link2的projectform._id的值。

    在DOM中,必须存在href=“project/_id”属性,以便进行SEO和遵循WCAG。

    我尝试将renderListProjects重新定义为

      renderListProjects() {
        var pj = this
        return this.data.projects.map(function(projectform,i) {
          return <li key={"li"+i}><a onClick={pj.click(projectform._id)} href={Meteor.absoluteUrl()+'project/' + projectform.username +'/' +projectform._id} key={"a"+i}>Project {projectform._id}</a></li>;
        });
      },
    click(id) {
        var currentApp = ProjectForm.findOne({_id:id}, {sort: {createdAt: -1}});
        this.setState({input36:input36});
      },
    

    但是当我运行我的Meteor+React项目时,我的浏览器崩溃了,因为某种无限循环正在发生。

  • 共有1个答案

    谭光辉
    2023-03-14

    您所创建的是React调用的受控输入。这意味着React已经在输入中声明了与This.data.myform.input1指向的任何相对应的值。

    为了能够更改输入字段,您需要做的是添加一个负责更新值的onChange处理程序。文档非常简单,但我在下面添加了一个小示例来说明它。

    class Form extends React.Component {
      constructor() {
        super();
        this.state = {
          myForm: {
            inputs: [
              {value: 1}, {value: 2}, {value: 3}
            ]
          }
        };
      }
      onChange = (index, event) => {
        let inputs = this.state.myForm.inputs.slice(0);
        inputs[index] = {
          value: parseInt(event.target.value, 10)
        };
    
        this.setState({
          myForm: {
            inputs: inputs
          }
        })
      }
      render() {
        return (<form>
          {this.state.myForm.inputs.map((input, index) => {
            return (<input onChange={this.onChange.bind(null, index)} value={input.value} key={index} />);
          }, this)}
          </form>);
      }
    };
    
    ReactDOM.render(<Form />, document.querySelector('#c'));
    

     类似资料:
    • 问题内容: 我的代码中的元素如下所示: 我想设置它的值,所以我用它的xpath创建了一个web元素: 但是现在我看不到设置值的选项… 问题答案: 使用代替 要么 或使用JavascriptExecutor 要么 或(使用javascript) 希望它能对您有所帮助:)

    • 我想通过Selenium设置日期值。 我正在处理这个页面

    • 我正在处理存在于一个php文件中的html表单,如下所示,我想计算输入的html输入值。 Php/HTML代码: 点击保存后,它会保存在JSON中,如下所示,并输入值列表。此时,我已经输入了值,因此在JSON中显示如下: 下面是属于上述html/php代码的表单截图部分: 输入值后,显示如下: 以下是inspect上的html代码: 问题陈述: 我想知道我需要添加什么php代码,以便获得输入值的计

    • 问题内容: 我的代码中有如下所示的元素: 我想设置它的值,所以我用它的xpath创建了一个web元素: 但是现在我看不到设置值的选项… 问题答案: 使用代替 要么 或(使用javascript) 或使用JavascriptExecutor 要么 希望它能对您有所帮助:)

    • 假设我在功能组件中创建了一个变量,如下所示: 如何根据用户输入的内容更改此值。我的想法是: 但是它不知道什么是值,我怎么能得到值到我的quizName变量?

    • 问题内容: 我正在使用react-native,并且创建了一个Alert元素。 现在,我想对其应用某种样式。假设我要为其应用红色背景色和白色的文本。 我该如何实现?可能吗? 问题答案: 您可以使用自定义库,例如react-native-modalbox。 您将可以根据需要设置样式的样式: 您可以使用打开模态 查看示例以查看更多选项。 奖励 :如果您想为react-native找到一个好的库,请尝试