Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 跨字符串数组映射以生成“选择”选项(React/Node)_Javascript_Arrays_Reactjs_Ecmascript 6 - Fatal编程技术网

Javascript 跨字符串数组映射以生成“选择”选项(React/Node)

Javascript 跨字符串数组映射以生成“选择”选项(React/Node),javascript,arrays,reactjs,ecmascript-6,Javascript,Arrays,Reactjs,Ecmascript 6,我有两个选择栏: 当我从第一个栏中选择一个选项时,我将其设置为填充此对象,如下所示: 我试图使第二个选择栏中的选项作为所需技能数组的内容填充 因此,在本例中,第二个选择栏中的选项是:提案撰写、麦肯锡7s框架等 我的尝试是: const createInputs = () => { return values.skills_required.map((skill, idx) => { return ( <div className="inp

我有两个选择栏:

当我从第一个栏中选择一个选项时,我将其设置为填充此对象,如下所示:

我试图使第二个选择栏中的选项作为所需技能数组的内容填充

因此,在本例中,第二个选择栏中的选项是:提案撰写、麦肯锡7s框架等

我的尝试是:

  const createInputs = () => {
    return values.skills_required.map((skill, idx) => {
      return (
        <div className="input-group">
            <select 
                  value={skill} placeholder="Enter a skill" 
                  onChange={e => updateSkill(e, idx)} 
                  className="form-control">
                  <option>Select an option...</option>
                        {values.category2.needed_skills && values.category2.needed_skills.map((c, i) => (
                          <option 
                                key = {i}
                                value={JSON.stringify(c)}>
                                {JSON.stringify(c)}
                            </option>
                               ))}
               </select>
              <div className="input-group-append">
                  <button 
                        className="btn btn-outline-danger mb-3" 
                        type="button" 
                        id="button-addon2" 
                        onClick={() => removeSkill(idx)}>x
                   </button>
              </div>
        </div>
      );
    });
  };

category2部分是我保存数据的地方。此外,我知道数据实际上在那里,因为当我在选择类别后控制台记录我的values.category2对象时,我得到以下信息:


你有没有试过添加一个报税表。i、 e

return  <option key = {i}
                    value={JSON.stringify(c)}>
                    {JSON.stringify(c)}
</option>

您的数据结构与此类似吗?我想说的是,问题可能是数据结构可能循环通过,但什么也得不到

如果您不确定是否可以始终在此处添加console.log:

<option>Select an option...</option>
{ values.category2.needed_skills 
&& values.category2.needed_skills.map((c, i) => {
    console.log("c", c);
    console.log("i", i);
    return ( <option 
                key = {i}
                value={JSON.stringify(c)}>
                {JSON.stringify(c)}
         </option>)
    }
  )
}
最初的返回没有起作用,因为没有花括号

我唯一能想到的另一件事是让数组成为自己的变量。i、 e.让所需技能=价值观。类别2。所需技能


我希望这些事情中有一件能有所帮助。

我没有想到这一点,但不幸的是,它返回了一个编译器错误,带有parens和without,我还收到了React for casing对变量的一些无声警告。也许可以尝试使用PascalCase作为您的values变量。谢谢,我在我的帖子的编辑中添加了一个响应。还有一个想法,category2是否会根据您以前的选择进行更改?如果是这种情况,那么您需要将category2更改为[aVariable],这样它就可以选择与您的选择相关的数据结构的正确部分。很抱歉这里的回复,我还不能对你的问题发表评论,因为我是个笨蛋。
import logo from './logo.svg';
import './App.css';
import { jsxFragment } from '@babel/types';


const values = {
  skills_required: [
    "skill_1",
    "skill_2"
],
  category2: {
    needed_skills: [ "Proposal Writing",  "The McKinsey Framwork", "etc"],
    some_other_stuff: {},
    a_date: "2019-09-30"
  }
}

const updateSkill = (e, idx) => {

  console.log("e: ", e);
  console.log("e: ", idx);
}

const removeSkill = (idx) => {
  console.log("e: ", idx);
}

const createInputs = () => {
  return values.skills_required.map((skill, idx) => {
    return (
      <div className="input-group">
          <select 
                value={skill} placeholder="Enter a skill" 
                onChange={e => updateSkill(e, idx)} 
                className="form-control">
                <option>Select an option...</option>
                      {values.category2.needed_skills && values.category2.needed_skills.map((c, i) => (
                        <option 
                              key = {i}
                              value={JSON.stringify(c)}>
                              {JSON.stringify(c)}
                          </option>
                             ))}
             </select>
            <div className="input-group-append">
                <button 
                      className="btn btn-outline-danger mb-3" 
                      type="button" 
                      id="button-addon2" 
                      onClick={() => removeSkill(idx)}>x
                 </button>
            </div>
      </div>
    );
  });
};


function App() {
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
          Edit <code>src/App.js</code> and save to reload.
        </p>
        <a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          Learn React
        </a>

        <jsxFragment>
          { createInputs()}
        </jsxFragment>
      </header>
    </div>
  );
}

export default App;
<option>Select an option...</option>
{ values.category2.needed_skills 
&& values.category2.needed_skills.map((c, i) => {
    console.log("c", c);
    console.log("i", i);
    return ( <option 
                key = {i}
                value={JSON.stringify(c)}>
                {JSON.stringify(c)}
         </option>)
    }
  )
}